首页 > 技术文章 > xml中的<where><if>模糊查询

lidar 2020-05-25 17:15 原文

 

select * from a
<where>
<!-- 模糊查询 -->
  <if test="null != name and name !=''">
    and name like '%'||#{name}||'%' <!--或者name like '%${name}%'-->
  </if>
  <if test="null != age and age != ''">
    and name = #{age}
  </if>
  <if test="sex != null and sex!=''">
    and sex = #{sex}
  </if>
</where>

 

 1 select * from a
 2 <where>
 3 <!-- 模糊查询 -->
 4 <if test="name !=null and name !=' ' ">
 5 //这种方法一般用于otacle数据库
 6 and name like '%'||#{name}||'%'
 7  //name like '%${name}%'
 8 //name like concat(#{name},'%')
 9 //优先用这个方法(这种方法一般用于mysql数据库)
10 //name like concat('%',#{name},'%')
11 
12 
13 </if>
14 <if test="age !=null and age!=''">
15 and name = #{age}
16 </if>
17 <if test="sex !=null and sex!=''">
18 and sex = #{sex}
19 </if>
20 <if test="user !=null and user !=''">
21 and user like concat (concat ('%',#{user}, '%'))
22 </if>
23 //时间范围(时间if条件没有kssj!=""因为时间不可能为空)
24 <if test="kssj !=null and jssj !=null>
25 and #{kssj} <= #{creatDate} <= #{jssj}))
26 </if>
27 //方法3(优先使用这种方法)
28 <if test="kssj !=null and jssj !=null>
29 and to_char(creatDate,'yyyy-mm-dd'}  between #{kssj} and #{jssj}
30 </if></where>

 

推荐阅读