ibatis 批量更新(二)
阿新 • • 發佈:2018-12-04
1.情景展示
oracle資料庫中,需要根據指定欄位內容呼叫加密程式後,根據主鍵id進行更新其對應的欄位mindex_id的值;
加密通過Java實現,然後通過Java對其進行更新;
Java使用的sqlMap框架是ibatis,ibatis結合oracle如何實現批量更新?
2.解決方案
sqlMap如何寫?
1 <!-- 批量更新 --> 2 <update id="updatePRIMARY_INDEX2" parameterClass="java.util.ArrayList"> 3 UPDATE PRIMARY_INDEX2 SET MINDEX_ID =4 <iterate conjunction="" open="CASE ID" close="END"> 5 <![CDATA[ 6 WHEN #list[].ID# THEN #list[].MINDEX_ID# 7 ]]> 8 </iterate> 9 WHERE ID IN 10 <!-- in()不能超過1000 --> 11 <iterate conjunction="," open="(" close=")"> 12 #list[].ID#13 </iterate> 14 </update>
相當於oracle中的
1 UPDATE PRIMARY_INDEX2 2 SET MINDEX_ID = CASE ID 3 WHEN '235886' THEN 4 '6' 5 WHEN '235885' THEN 6 '5' 7 WHEN'235884' THEN 8 '4' 9 WHEN '235883' THEN 10 '3' 11 WHEN '235882' THEN 12 '2' 13 WHEN '235881' THEN 14 '1' 15 END 16 WHERE ID IN ('235886', '235885', '235884', '235883', '235882', '235881');
說明:oracle的in()函式有限制,裡面的個數不能超過1000個。
寫在最後
哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!
相關推薦: