关于mybatis中 if test的条件怎么写

本文介绍了MyBatis中动态SQL`if`标签的使用,特别是针对空字符串查询可能导致的问题及其解决方案。当页面输入框清空后,原查询条件仍会使用空字符串,导致错误结果。建议在`iftest`中添加对空字符串的判断,以避免不必要的查询。同时,展示了在更新操作中如何处理字段置空的情况,确保只有当字段真正为空时才会更新为NULL。
摘要由CSDN通过智能技术生成

1.mybatis 中 的 if test写法

1.1官方文档上对于if是这么写的:

<if test="title != null">
    AND title like #{title}
</if>

参考文档:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html

实际项目中会有这种情况: 页面上title字段输入某个值进行查询,手动将输入框中的值删除,然后再次查询,发现结果不正确,究其原因是应为title传入了空串" " 这样在mybatis配置文件中就会用空串进行查询,导致出现错误结果

1.2建议写法:

<if test="title != null and title != ''" >
    AND title like #{title}
</if>

2.使用mybatis 做修改时将字段置空

if中如果传入的参数如果为空,那么将不会执行if中的语句

解决办法:

<update id="updateObject"  parameterType="*.*.Object" >
update table
		<set>
			<if test="Object.fullName == null or Object.fullName  ==''">
				full_name = null,
			</if>
			<if test="Object.fullName != null and Object.fullName  !=''">
				full_name = #{companyOrg.fullName},
			</if>
			<if test="Object.level == null or Object.level  ==''">
				level = null,
			</if>
			<if test="Object.level == 0 ">
				level = null,
			</if>
			<if test="Object.level != null and Object.level  !=''  and Object.level != 0 ">
				level = #{companyOrg.level},
			</if>

		</set>
		where 1=1 and  id =#{companyOrg.id}
</update>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值