1. 程式人生 > >MyBatis批量插入/批量更新

MyBatis批量插入/批量更新

前段時間遇到批量更新上千條資料的問題,如果使用for迴圈update資料會導致時間長效率低(因為頻繁與mysql互動,耗時較長),這是一個比較常見的需求應該可以用一條sql語句解決,查詢之後解決了該問題,順便記錄一下具體程式碼,方便以後查詢順便幫助遇到同樣需求的人。

批量插入:
<insert id="insertBatch" parameterType="具體實體類"
    useGeneratedKeys="true" keyProperty="xxx">
    INSERT IGNORE INTO `${db_name}`.xxx(xx,xx,xx)
    VALUES
    <foreach collection="list" item="order" index="index" separator=",">
        (#{order.name, jdbcType=VARCHAR},
        xx,
        xx
        )
    </foreach>
</insert>


批量更新:方法一:與mysql互動一次,多條sql語句
<update id="updateBatchOne" parameterType="java.util.List">
    <foreach collection="list" item="order" index="index" separator=";">
        UPDATE `${db_name}`.xxx
                    <set>
                        <if test="item.name !=null">
                                when id=#{item.id} then #{item.name}
                        </if>
                        xxx
                        xxx
                        ...
                    </set>
        WHERE transport_no = #{order.transportNo}
    </foreach>
</update>

方法二:與mysql互動一次,一條sql語句
<update id="updateBatch" parameterType="java.util.List">
    update `${db_name}`.xxx
    <trim prefix="set" suffixOverrides=",">
        <trim prefix="name=case" suffix="end,">
            <foreach collection="list" item="item" index="index">
                <if test="item.name!=null">
                    when id=#{item.id} then #{item.name}
                </if>
            </foreach>
        </trim>
    </trim>
    where id in
    <foreach collection="list" index="index" item="item" separator="," open="(" close=")">
        #{item.name,jdbcType=VARCHAR}
    </foreach>
</update>

相關推薦

Oracle + Mybatis實現批量插入更新和刪除示例程式碼

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

mybatis 當需要批量插入更新主鍵相同的資料時的處理方法

該方法 如果表中沒有沒有主鍵對應的資料就新增一條 如果有的話就更新該條資料 <insert id="insertBatch"> REPLACE into representatives_and_principal_personnel (id,examine_and_a

mybatis批量插入更新

由於系統中一次性需要匯入1000條資料,為防止超時以及長時間佔用資料庫連線,採取了批量更新插入。 1.後臺程式碼每50條,與資料庫進行一次互動             //批量插入/更新             int dataLimitNum = 50;// 限制分批條

mybatis 註解的方式批量插入更新資料

轉載自:https://www.cnblogs.com/dakewang/p/8268744.html   一,當向資料表中插入一條資料時,一般先檢查該資料是否已經存在,如果存在更新,不存在則新增  使用關鍵字  ON DUPLICATE KEY UP

MyBatis批量插入/批量更新

前段時間遇到批量更新上千條資料的問題,如果使用for迴圈update資料會導致時間長效率低(因為頻繁與mysql互動,耗時較長),這是一個比較常見的需求應該可以用一條sql語句解決,查詢之後解決了該問題,順便記錄一下具體程式碼,方便以後查詢順便幫助遇到同樣需求的

mybatis批量插入更新

一:Oracle資料庫 1:批量插入 <insert id="insertBatch" parameterType="java.util.List" >     insert into RECIPEDETAIL (RDID, ROID, TYPE,       

Mybatis批量插入更新的正確姿勢

最近業務中用到批量插入或更新,查了一下資料。 其中stackoverflow中這個回答給了我很大啟發。 就是在對映的方法中拼接多條插入或者更新語句 但是根據後面幾位的回答結合官方文件 可以看出拼接方式應該仍然是一個大的sql語句,最終可能被

批量插入更新數據

ace result 之前 服務 tina commit .bat ges for /// <summary> /// 大數據單表批量插入,帶事務 /// </summary> /// <param n

MYSQL批量插入更新,insert from select, update set

關於MYSQL批量插入和更新 舉個例子 有兩張表 a,b a:  id   uid   rel_name b:  uid   name  1    

JDBC批量插入更新

批量新增 public void UpdateFileData(String sSQL, ArrayList<String[]> objParams) { GetConn(); int iResu

sql server批量插入更新兩種解決方案

對於sql 來說操作集合型別(一行一行)是比較麻煩的一件事,而一般業務邏輯複雜的系統或專案都會涉及到集合遍歷的問題,通常一些人就想到用遊標,這裡我列出了兩種方案,供大家參考 1.遊標方式 1 DECLARE @Data NVARCHAR(max) 2 SET @Da

C#使用SqlDataAdapter 實現資料的批量插入更新

近日由於專案要求在需要實現中型資料的批量插入和更新,晚上無聊,在網上看到看到這樣的一個實現方法,特摘抄過來,以便以後可能用到參考。 一.資料的插入 DateTime begin = DateTime.Now; string connectionString = ......; using(Sql

mybatis 操作(批量插入,批量修改,批量刪除, 分頁查詢)

mybatis 操作(批量插入,批量修改,批量刪除,分頁查詢) 環境描述 - mybatis 3.2 ; - mysql資料庫 - java開發語言 1.批量插入 mapper 類方法

在C#中完成海量資料的批量插入更新

對於海量資料的插入和更新,ADO.NET確實不如JDBC做到好,JDBC有統一的模型來進行批操作.使用起來非常方便: PreparedStatement ps = conn.prepareStatement("insert or update arg1,args2....")

C# 資料批量插入更新

          *table為更新表名或插入資料表    SqlConnection conn = new SqlConnection(sqlConStr);             SqlCommand comm = conn.CreateCommand();    

Hibernate批量插入更新、刪除

最近一個專案中需要對資料進行統計,然後插入到庫中,資料大概幾萬,一條條搞速度太慢,這就必然要批量插入,一開始 用單執行緒跑,發現速度也不是很快,後面改用多執行緒,速度一下子上來啦,中間遇到幾個問題: 一:就是在批量插入的時候,由於是手動提交事務的,會導致事務提交後不能重

Mybatis-Plus插入更新自動將date轉換為Timestamp,日期會減少8小時

     在使用mybatis-plus自帶的插入和更新時,出現了一個神奇的問題,前臺傳入的是Date型別(yyyy-MM-dd),但是在插入的時候,卻發現是Timestamp型別,插入到資料庫發現時間比原來減少了8小時,後來將資料庫日期型別修改為Datetime解決。  

ibatis批量插入 批量刪除 -iterate標籤應用

專案開發中在很多地方可能會遇到同時插入多條記錄到資料庫的業務場景,如果業務級別迴圈單條插入資料會不斷建立連線且有多個事務,這個時候如果業務的事務執行頻率相當較高的話(高併發),對資料庫的效能影響是比較大的;為了提高效率,批量操作會是不錯的選擇,一次批量操作只需要建立一次連

【java】【mybatis】在使用mybatis進行批量插入批量更新批量操作時,切割In集合List進行分批批量操作的java中的切割代碼

lse span ati 批量更新 次數 sublist 調用 size ==       紅字部分代表mybatis的批量操作調用方法:       int num = 0; int maxLength = 200; in

mybatis+mysql批量插入批量更新

一、批量插入 批量插入資料使用的sql語句是: insert into table (aa,bb,cc) values(xx,xx,xx),(oo,oo,oo)   mybatis中mapper.xml的程式碼如下:   <!-- 批量插入資料 -->