目录
1,if标签:
2,where标签:
3,choose(when、otherwise)标签
4,foreach标签
5,set标签
6,trim标签
一,动态SQL
MyBatis通过标签的配合使用,可实现如下功能
语句的动态拼接
前后缀格式处理
复杂参数处理
1,if标签:
动态SQL技术中最常用的标签之一
类似于Java中的if语句
语法:
<if test = "条件判断,返回true或false" >
SQL语句
</if>
2,where标签:
简化SQL
语句中
where
子句处理
智能处理and、or等关键字
语法:
<where>
<if test="条件判断">
SQL语句
</if>
…
</where>
3,choose(when、otherwise)标签
是一个组合标签,通常与
when
、
otherwise
标签配合使用
类似于
Java
中
switch
语句
语法:
<choose>
<when test="条件判断,返回true或false">
</when>
<when test="条件判断,返回true或false">
</when>
...
<otherwise>
</otherwise>
</choose>
4,foreach标签
迭代一个集合,通常用于
in
条件
语法:
<foreach collection = "参数名称"
item = "元素别名"
open = "(" //起始位置的拼接字符
separator = "," //元素之间的连接符
close = ")" //结束位置的拼接字符
index = "当前元素位置下标" >
#{元素别名}
</foreach>
5,set标签
简化
SQL
语句中
set
子句处理
智能
忽略更新语句尾部多出来的逗号
<set>
<if test="条件判断">
SQL语句
</if>
…
</set>
6,trim标签
动态地为
SQL
语句添加前后缀
智能忽略标签前后多余的
and
、
or
或逗号等字符
语法:
<trim prefix = "前缀"
suffix = "后缀"
prefixOverrides = "忽略前缀"
suffixOverrides = "忽略后缀" >
…
</trim>
示例:
<select id="selectList" resultType="SysUser">
select * from t_sys_user
<trim prefix="where" prefixOverrides="and|or">
<if test="roleId != null">
and roleId = #{roleId}
</if>
…
</trim>
</select>