解决mybatis update并非所有字段需要更新问题
作者:cn_TongTong
这篇文章主要介绍了解决mybatis update并非所有字段需要更新问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
mybatis update并非所有字段需要更新
mybatis update
需求:更新字段作为参数,未更新字段不传入
解决办法
<update id="updateUser" parameterType="com.test.entity.User"> update BS_USER <trim prefix="set" suffixOverrides=","> <if test="ACCOUNT != null">ACCOUNT=#{ACCOUNT},</if> <if test="NAME != null">NAME=#{NAME},</if> <if test="PROV != null">PROV=#{PROV},</if> <if test="FAILURE_TIME != null">FAILURE_TIME=#{FAILURE_TIME},</if> </trim> where USERID=#{USERID} </update>
将set标签换成<trim prefix="set"></tirm>
标签中suffixOverrides=","的意思是最后一个去掉逗号
mybatis update时遇到的问题
xml是这么写的
<update id="deleteAll" parameterType="java.util.List" > update cw_base_resident_house_ref a set state = 0 where 1=1 and a.ID in <foreach item="item" collection="list" separator="," open="(" close=")" index=""> #{item.refId} </foreach> </update>
之后运行报错,就是返回的类型不对
原来是service和mapper里的类型错了,定义的是list,应该定义为int。
因为 update/delete,返回值是:影响的行数;无需指明resultClass;但如果有约束异常而删除失败,只能去捕捉异常。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。