解決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;但如果有約束異常而刪除失敗,隻能去捕捉異常。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 一篇文章帶你瞭解mybatis的動態SQL
- Mybatis中xml的動態sql實現示例
- MyBatis中關於SQL的寫法總結
- MyBatis解決Update動態SQL逗號的問題
- MyBatis註解實現動態SQL問題