Mybatis+Oracle進行資料的批量插入和更新____Oracle

來源:互聯網
上載者:User

       Mybatis是web工程開發中非常常用的資料持久化的架構,通過該架構,我們非常容易的進行資料庫的增刪改查。資料庫連接進行事務提交的時候,需要耗費的資源比較多,如果需要插入更新的資料比較多,而且每次事務只提交一條資料,會造成大型資料庫資源浪費,導致資料庫效能、系統效能大幅度下降。

       關於mybatis的批量插入,網上的多數樣本多半是關於MySQL資料庫的,關於Oracle資料庫的例子比較少。個人在嘗試使用Mybatis進行Oracle資料庫的資料批量插入時,發現Mybatis完成的工作主要是組裝批量插入的SQL語句。我們只需要在Mybatis設定檔中拼裝出資料庫支援的SQL語句基本也就完成了批量插入的工作。

        Mybatis結合Oracle資料庫進行批量資料插入,從Oracle資料庫角度來看,實際上就是通過單條SQL語句,插入多條資料。經過查詢得知,以下語句可以插入通過單條語句插入多條資料:

INSERT ALL         INTO USERINFO(userid,username) VALUES('1001','Tom')        INTO USERINFO(userid,username) VALUES('1002','Black')        INTO USERINFO(userid,username) VALUES('1003','Jetty')        INTO USERINFO(userid,username) VALUES('1004','Cat')      SELECT 1 FROM DUAL;

       我們現在需要做的就是通過Mybatis設定檔拼裝這樣格式的SQL即可完成資料批量插入。Mybatis提供了<foreach>標籤來進行迴圈控制,此時我們可以把使用者資訊組成的列表作為參數(parameterType)輸入,樣本如下:

<insert id="batchInsertUser" parameterType="java.util.ArrayList">INSERT ALL         <foreach collection="list" item="userList" index="index">            INTO USERINFO(userid,username) VALUES(#{userList.userid},#{userList.username})        </foreach>      SELECT 1 FROM DUAL</insert>

關於<foreach>標籤的使用,資料非常多,在此不再贅述。

完成資料的批量插入後,批次更新的思路也是一樣的,但是相比資料插入,更新要更簡單一些。具體做法,參考下面的例子,入參還是需要更新資訊的使用者組成的List:

<update id="batchUpdateUser" parameterType="java.util.ArrayList"><foreach collection="list" item="userlist" index="index" open="begin" close=";end;" separator=";">UPDATE USERINFO T     <set>T.USERID = #{userlist.userid,jdbcType=VARCHAR},T.USERNAME = #{userlist.username,jdbcType=VARCHAR},   </set> WHERET.USERID = #{userlist.userid,jdbcType=VARCHAR}</foreach></update>

遇到的問題:本人在進行批量資料插入時,遇到一個問題,當入參List的size()比較大的時候,會導致插入失敗,經過反覆嘗試,發現list的size()在500以內的時候,大量操作沒有問題,具體原因還沒有找到,這點請大家指教。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.