- if
- choose (when, otherwise)
- trim (where, set)
- foreach
if
<select id="方法名"
resultType="返回类型">
SELECT * FROM 表名
WHERE 条件1
<if test="字段名 != null">
AND 条件二
</if>
</select>
choose、when、otherwise
<select id="方法名"
resultType="返回类型">
SELECT * FROM 表名 WHERE 条件1
<choose>
<when test="字段名!= null">
AND 条件二
</when>
<otherwise>
AND 条件三
</otherwise>
</choose>
</select>
trim、where、set
<select id="方法名"
resultType="返回类型">
SELECT * FROM 表名
WHERE
<if test="字段名 != null">
字段名 = #{字段名}
</if>
</select>
这种写法。在state为空的时候他就会出错。遇到这种我们可以把where换成< where>< /where>.还可以通过<trim prefix=“WHERE” prefixOverrides="AND |OR ">。。。。。</trim>。其中prefixOverrides中写的东西会移除,会显示prefix中的内容。
set使用在动态更新sql语句
<update id="方法名">
update 表明
<set>
<if test="字段名!= null">字段名=#{变量名}</if>
。。。。。
</set>
where 条件语句
</update>
使用<set>元素。会在首行插入set元素,并且会删除额外的逗号。
相当于
<trim prefix="SET" suffixOverrides=",">
...
</trim>
foreach
大多在in条件语句中使用。
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
其中collection填写的是参数类型(list、array、map)对应的parameterType为(java.util.List、java.util.ArrayList、java.util.HashMap)
- .item 表示一个元素名字
- index 表示每次迭代到的位置。
- open表示以什么开始
- separator 分隔符
- close以什么结束