我就废话不多说了,大家还是直接看代码吧~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<!-- 查询物品的id --> <select id= "checkItemsId" parameterType= "pd" resultType= "java.lang.Integer" > SELECT i.itemsid FROM pq_goods_items i <where> <!--方式一使用choose的方式查询--> <!-- <choose> <when test= "parentId !=0 " >parentTypeId=#{parentId}</when> <when test= "parentId==0" >parentTypeId is null </when> </choose> --> <!--方式二使用 if 的方式查询--> < if test= "color!=null" > i.personone=#{personone} AND i.persontwo=#{persontwo} AND i.color=#{color} </ if > < if test= "color==null" > i.personone=#{personone} AND i.persontwo=#{persontwo} AND i.color is null </ if > </where> </select> |
需要注意的是 使用了where标签以后,sql中不在使用where字段来限制条件
如果判断条件有多个 中间用 and 表示并列
1
|
< if test= "color!=null and personone!=null" > |
补充:mybaits中if 多个test 和 if else 分支支持
mybaits中if 多个test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<select id= "selectByDynamicallyWithPage" parameterType= "map" resultMap= "BaseResultMap" > select <include refid= "Base_Column_List" /> from gene_polymorphism <where> diag_id = #{conds.diagId,jdbcType=INTEGER} < if test= "conds.chromesome!=null and conds.chromesome!=''" > and chromesome = #{conds.chromesome,jdbcType=VARCHAR} </ if > < if test= "conds.startPos!=null" > and start_pos >= #{conds.startPos,jdbcType=BIGINT} </ if > </where> </select> |
if else分支:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
<select id= "selectByDynamicallyWithPage" parameterType= "map" resultMap= "BaseResultMap" > select <include refid= "Base_Column_List" /> from gene_polymorphism <where> diag_id = #{conds.diagId,jdbcType=INTEGER} < if test= "conds.chromesome!=null" > and chromesome = #{conds.chromesome,jdbcType=VARCHAR} </ if > < if test= "conds.startPos!=null" > and start_pos >= #{conds.startPos,jdbcType=BIGINT} </ if > < if test= "conds.endPos!=null" > and end_pos <= #{conds.endPos,jdbcType=BIGINT} </ if > < if test= "conds.geneTypes!=null" > <!--and gene_type in--> <!--<foreach collection= "conds.geneTypes" open= "(" close= ")" item= "item" separator= "," >--> <!--#{item,jdbcType=VARCHAR}--> <!--</foreach>--> and ( <foreach collection= "conds.geneTypes" item= "item" separator= "or" > gene_type like CONCAT( '%' ,CONCAT(#{item,jdbcType=VARCHAR}, '%' )) </foreach> ) </ if > < if test= "conds.geneChange!=null" > and gene_change like CONCAT( '%' ,CONCAT(#{conds.geneChange,jdbcType=VARCHAR}, '%' )) </ if > </where> order by <trim suffixOverrides= "," > <choose> <when test= "conds.chromesomeSort!=null and conds.chromesomeSort=='asc'" > chromesome asc , </when> <when test= "conds.chromesomeSort!=null and conds.chromesomeSort=='desc'" > chromesome desc , </when> </choose> <choose> <when test= "conds.startPosSort!=null and conds.startPosSort=='asc'" > start_pos asc , </when> <when test= "conds.startPosSort!=null and conds.startPosSort=='desc'" > start_pos desc , </when> <otherwise> id desc </otherwise> </choose> </trim> limit #{startRow,jdbcType=INTEGER} ,#{pageSize,jdbcType=INTEGER} <!-- order by id desc limit #{startRow,jdbcType=INTEGER} ,#{pageSize,jdbcType=INTEGER} --> </select> |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/pqsas_com/article/details/75337608