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

寫在最后

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

 相關推薦:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM