网上实际上有很多的mybatis批量更新方法,但是我拷贝下来修改后怎么也跑不通,总是提示说sql中不能出现分号,所以就在网上找到了这种办法,完美解决mybatis批量更新的问题,话不多说,直接上代码:
<!--批量更新-->
<update id="updateSelectPlanTobacco" parameterType="java.util.List">
update ZD_SELECT_PLAN_TOBACCO set
PLAN_ID=
<foreach collection="list" item="item" index="index" separator=" " open="case ID" close="end">
when #{item.id,jdbcType=VARCHAR} then #{item.planId,jdbcType=VARCHAR}
</foreach>
,SEMI_PRODUCTS_MARK=
<foreach collection="list" item="item" index="index" separator=" " open="case ID" close="end">
when #{item.id,jdbcType=VARCHAR} then #{item.semiProductsMark,jdbcType=VARCHAR}
</foreach>
,BROKEN_TOBACCO=
<foreach collection="list" item="item" index="index" separator=" " open="case ID" close="end">
when #{item.id,jdbcType=VARCHAR} then #{item.brokenTobacco,jdbcType=VARCHAR}
</foreach>
,PLAN_NUMBER=
<foreach collection="list" item="item" index="index" separator=" " open="case ID" close="end">
when #{item.id,jdbcType=VARCHAR} then #{item.planNumber,jdbcType=VARCHAR}
</foreach>
,PLAN_WEIGHT=
<foreach collection="list" item="item" index="index" separator=" " open="case ID" close="end">
when #{item.id,jdbcType=VARCHAR} then #{item.planWeight,jdbcType=VARCHAR}
</foreach>
,REMARKS=
<foreach collection="list" item="item" index="index" separator=" " open="case ID" close="end">
when #{item.id,jdbcType=VARCHAR} then #{item.remarks,jdbcType=VARCHAR}
</foreach>
where ID in
<foreach collection="list" index="index" item="item" separator="," open="(" close=")">
#{item.id,jdbcType=VARCHAR}
</foreach>
</update>
不做过多的解释,如果看不懂的话就给我留言吧