解決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。

推薦閱讀: