MyBatis的动态SQL

动态 SQL MyBatis 强大特性之一。极大的简化我们拼装 SQL 的操作。
动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。
MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作

 

if标签 

choose (when, otherwise)标签 (我感觉有点像switch-case)

 where标签(实现where子句,并且可以去掉前面多余的and。注意and要写在前面才行)

下图按理说是不能去掉多余的and的。 

set标签(实现update里面的set子句,可以去掉多余的,(逗号)。规则与where标签类似)

按理说,这里多余的,(逗号) 也是不能去除的。

trim标签(可以去除多余的and和逗号,比where和set更强大)

 

 

 foreach标签(顾名思义,用来遍历集合的)

动态 SQL 的另外一个常用的必要操作是需要对一个集合进行遍历,通常是在构建 IN 条件语句的时候

当迭代列表、集合等可迭代对象或者数组 时, index 是当前 迭代的次数 item 的值是本次 迭代获取的 元素
当使用字典(或者 Map.Entry 对象的集合) 时, index item

 

bind标签(用得不多)

bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。比如

sql标签 

mybatis中sql标签重要是为了避免在项目开发的过程中重复编写大量相同的sql语句。

通过使用sql将所有需要查询的字段封装起来,在编写select语句的时候就不需要每次都重复编写需要查询的字段了,只需要在查询语句中包含定义的sql语句即可 。

通过使用sql标签减少重复的sql语句,不仅可以减少我们的代码量,还更加方便我们查看!

//建立sql片段
<sql id="query_user_where">
	<if test="id!=null and id!=''">
		and id=#{id}
	</if>
	<if test="username!=null and username!=''">
		and username like '%${username}%'
	</if>
</sql>

//使用include引用sql片段
<select id="findUserList" parameterType="user" resultType="user">
	select * from user
		<where>
			<include refid="query_user_where"/>
		</where>
</select>

//引用其它mapper.xml的sql片段
<include refid="namespace.sql片段"/>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值