閒來記錄下mybatis的批量操作,寫法很簡單,mapper中的方法傳入一個list,然後xml裏循環就好;
注意點:
循環的list一次過千可能有問題,需要分批次執行,這裏以批量修改爲例,以前好像遇到過批量新增時候,id數量限制,好像是160(忘記具體原因了),總之批量操作注意數量問題。解決方法:看下面的例子
還有就是,批量操作的時候,獲取集合的某一個屬性,不需要單獨去建一個單個屬性的list,可以把對象list傳入後,直接用.(點)獲取相應屬性(例子中倒數第四行)
代碼如下:
<update id="對應的方法名">
update 表
set STATUS = #{status}
where ORG_CODE = #{orgCode}
and OUTPATIENT_CODE in
<trim suffixOverrides=" OR OUTPATIENT_CODE IN ()">
<foreach item="tlybMzjs" index="index" collection="對應的list"
open="(" close=")">
<if test="index != 0">
<choose>
<when test="index % 1000 == 999">) OR OUTPATIENT_CODE IN (</when>
<otherwise>,</otherwise>
</choose>
</if>
#{tlybMzjs.outpatientCode}
</foreach>
</trim>
</update>