1. if 判读条件是否满足,满足将会把 sql 语句加上。
<select id="findUser" parameterType="Map" resultType="User"> select * from t_user where 1=1 <if test="name!=null"> and name like ‘${name}%‘ </if> </select>
2. choose, when, otherwise -----when可以有多个
<select id="findUser" parameterType="Map" resultType="User"> select * from t_user where 1=1 <choose> <when test="name!=null"> and name like ‘${name}%‘ </when> <otherwise> and age=23 </otherwise> </choose> </select>
3.where 标签 判断是否有条件成立
如果有条件则加上 where,如果没有则不加。
where元素知道插入“where”如果它包含的标签中有内容返回的话。
此外,如果返回的内容以“AND”或者"OR"开头,它会把“AND”获取“OR”去掉。
<select id="findUser" parameterType="Map" resultType="User"> select * from t_user <where> <if test="name!=null"> name like ‘${name}%‘ </if> <if test="age>23"> and age=23 </if> </where> </select>
4. trim----overrides属性使用了管道分隔的文本列表来覆写,而且它的空白也是不能忽略的。
这样的结果是移出了指定在 overrides属性里字符,而在开头插入 prefix属性中指定的字符。
<select id="findUser" parameterType="Map" resultType="User"> select * from t_user <trim prefix="order by" prefixOverrides="AND |OR "> <if test="age>23"> and age desc </if> </trim> </select>
5. foreach ----经常使用到的功能是集合迭代,通常用在 IN条件句。
<select id="findUser" parameterType="list" resultType="User"> select * from t_user <where> id in <foreach collection="list" item="var" open="(" close=")" separator=","> #{var} </foreach> </where> </select>
原文:https://www.cnblogs.com/Vincent-yuan/p/11297625.html