1. 程式人生 > >ibatis 批量更新(二)

ibatis 批量更新(二)

 

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個。

寫在最後

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦: