0
点赞
收藏
分享

微信扫一扫

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

白衣蓝剑冰魄 2022-04-29 阅读 57
java后端

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>
举报

相关推荐

0 条评论