17、MyBatis入门:动态SQL(if-where)

MyBatis基础入门《十八》动态SQL(if-where)

描述:

  代码是在《MyBatis基础入门《十七》动态SQL》基础上进行改造的,不再贴所有代码,仅贴改动过的代码。

ClientMapper.xml文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 
 6 <mapper namespace="com.charles.mapper.ClientMapper">
 7  
 8     <resultMap type="com.charles.entity.TblClient" id="tblClientID">
 9         <id property="cid" column="id" />
10         <result property="cname" column="client_name"/>
11         <result property="caddress" column="client_address"/>
12         <result property="cbirthday" column="client_birthday"/>
13     </resultMap>    
14     
15     <select id="getClientAll" resultMap="tblClientID">
16         SELECT 
17                 id ,
18                 client_name ,
19                 client_address ,
20                 client_birthday 
21         FROM tbl_client 
22         WHERE 1 = 1 
23         <if test="null != cname and '' != cname ">
24             AND client_name like CONCAT('%',#{cname},'%') 
25         </if>
26         <if test="null != address and '' != address ">
27             AND client_address = #{address}
28         </if>
29     </select>
30      
31 </mapper>

ClientMapper.java

 1 package com.charles.mapper;
 2 
 3 import java.util.List;
 4 
 5 import org.apache.ibatis.annotations.Param;
 6 
 7 import com.charles.entity.TblClient;
 8 
 9 public interface ClientMapper {
10     
11     /**
12      * 注意这个名字,必须要和ClientMapper.xml文件中的select标签id属性值一样。
13      * @param name 
14      * @param caddress
15      * @return List<TblClient> 集合
16      */
17     public List<TblClient> getClientAll(@Param("cname") String name, @Param("address") String caddress);
18     
19 }

JunitSelect.java

 1 package com.charles.junit;
 2 
 3 import java.util.List;
 4 
 5 import org.apache.ibatis.session.SqlSession;
 6 import org.junit.Test;
 7 
 8 import com.charles.entity.TblClient;
 9 import com.charles.mapper.ClientMapper;
10 import com.charles.util.MyBatisUtil;
11 
12 public class JunitSelect {
13 
14     @Test
15     public void selectif() {
16 
17         /** 1. 获取SQLSession **/
18         SqlSession session = MyBatisUtil.getSqlSession();
19 
20         /** 2. 调度方法,从数据库中获取数据 **/
21         List<TblClient> list =  session.getMapper(ClientMapper.class).getClientAll("缘","上海");
22 
23         /** 3. 关闭SQLSession **/
24         MyBatisUtil.closeSqlSession(session);
25 
26         for (TblClient client : list) {
27             System.out.println(client.getCid() + "\t" + client.getCname() + "\t" + client.getCaddress() + "\t"
28                     + client.getCbirthday());
29         }
30     }
31 }

测试结果:

*

》》》》》 改造ClientMapper.xml 使用where标签

  >> where标签用途

    -> 简化SQL语句中where条件判断

    -> 智能处理 and 和 or

ClientMapper.xml文件改造前:

*

ClientMapper.xml文件改造后:

*

测试代码(给的值,均为空):

*

测试结果:

*

如有问题,欢迎纠正!!!

如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9903734.html

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: