Mybatis-框架动态SQL

动态SQL

  • MyBatis通过标签的配合使用,可实现如下功能
    • 语句的动态拼接
    • 前后缀格式处理
    • 复杂参数处理
  • 常用标签
    • if
    • where
    • choose
    • foreach
    • set
    • trim

if标签

  • 动态SQL技术中最常用的标签之一
  • 类似于Java中的if语句
<if  test = "条件判断,返回true或false" >
	SQL语句
</if>

 where标签

  • 简化SQL语句中where子句处理
  • 智能处理and、or等关键字
<where>
	<if test="条件判断">
		SQL语句
	</if>
	…
</where>

choose(when、otherwise)标签

  • 是一个组合标签,通常与when、otherwise标签配合使用
  • 类似于Java中switch语句
<choose>
	<when test="条件判断,返回true或false">
	</when>
	<when test="条件判断,返回true或false">
	</when>
	...
	<otherwise>
	</otherwise>
</choose>

foreach标签

  • 迭代一个集合,通常用于in条件
<foreach collection = "参数名称"   
               item = "元素别名" 
               open = "("
               separator = "," 
               close = ")" 
               index = "当前元素位置下标" >
	#{元素别名}
</foreach>
  • open:起始位置的拼接字符
  • separator:元素之间的连接符
  • close:结束位置的拼接字符

set标签 

  • 简化SQL语句中set子句处理
  • 智能忽略更新语句尾部多出来的逗号 
  • 用于Update修改语句中
<set>
	<if test="条件判断">
		SQL语句
	</if>
	…
</set>

trim标签

  • 动态地为SQL语句添加前后缀
  • 智能忽略标签前后多余的and、or或逗号等字符
<trim prefix = "前缀" 
	  suffix = "后缀" 
	  prefixOverrides = "忽略前缀" 
	  suffixOverrides = "忽略后缀" >
	…
</trim>
  • 示例1:
  • 使用trim标签替换前面示例中的where标签
  • 实现示例中相同的功能
<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>
  • 示例2:
  • 使用trim标签替换前面示例中的set标签
  • 实现示例中相同的功能
<update id="update" parameterType="SysUser">
	update t_sys_user
		<trim prefix="set" suffixOverrides="," suffix= " where id = #{id}" >
			<if test=“account != null">
				and account = #{account},
			</if>
			…
		</trim>
</update>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值