mybatis动态sql

if
动态sql 有条件的包含where子句

<select id="findActiveBlogLike"
	resultType="Blog">
    select * from blog
    where status="ACTIVE"
	<if test="title != null">
		and title like #{title}
	</if>
	<if test="author != null and author.name != null">
		and author_name like #{author.name}
	</if>
</select>

choose类似switch
当有一个满足时就跳出,不判断下面的条件

<select id="findActiveBlogLike"
	resultType="Blog">
    select * from blog
    where status="ACTIVE"
	<choose>
		<when test="title != null">
			and title like #{title}
		</when>
		<when test="author != null and author.name != null">
			and author_name like #{author.name}
		</when>
		<otherwise>
			and featured = 1
		</otherwise>
	</choose>
</select>

where
如果where中没有符合的结果,则执行单条select *,防止出现where后没有条件查询失败的情况

<select id="findActiveBlogLike"
	resultType="Blog">
	 select * from blog
	<where>
		<if test="status != null">
			status = #{status}
		</if>
		<if test="title != null">
			and title like #{title}
		</if>
		<if test="author != null and author.name != null">
			and author_name like #{author.name}
		</if>
	</where>
</select>

set

<update id="updateAuthorIfNecessary">
	update author
	<set>
		<if test="username != null">username=#{username},</if>
		<if test="password != null">password=#{password},</if>
		<if test="email != null">email=#{email},</if>
		<if test="bio != null">bio=#{bio}</if> 
	</set>
	where id = #{id}
</update>

foreach

<select id="selectPostIn" resultType="domain.blog.Post">
	select *
	from post p
	where id in
	<foreach item="item" index="index" collection="list"
		open="(" separator="," close=")"> <!--指定开闭匹配的字符串以及在迭代中间放置分隔符-->
		#{item}
	</foreach>
</select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值