mybatis中批量插入的兩種方式 高效插入

2021-09-01 20:39:45 字數 1061 閱讀 8311

一、mybiats foreach標籤

insert into tstudent(name,age)

select # as a, # as b from dual

二、mybatis executortype.batch

mybatis內建的executortype有3種,預設的是******,該模式下它為每個語句的執行建立乙個新的預處理語句,單條提交sql;而batch模式重複使用已經預處理的語句,並且批量執行所有更新語句,顯然batch效能將更優; 但batch模式也有自己的問題,比如在insert操作時,在事務沒有提交之前,是沒有辦法獲取到自增的id,這在某型情形下是不符合業務要求的

具體用法如下:

*方式一 spring+mybatis 的

//獲取sqlsession

//從spring注入原有的sqlsessiontemplate

@autowired

private sqlsessiontemplate sqlsessiontemplate;

// 新獲取乙個模式為batch,自動提交為false的session

// 如果自動提交設定為true,將無法控制提交的條數,改為最後統一提交,可能導致記憶體溢位

sqlsession session = sqlsessiontemplate.getsqlsessionfactory().opensession(executortype.batch,false);

int size = 10000;

try}

} catch (exception e) finally

方法二:

public void insertbatch(mapparammap, listlist) throws exception 

}} } catch (exception e) finally

}

原文

MyBatis 批量資料插入的兩種方式

public intaddpersons param persons list persons 根據mysql的insert語句規則結合foreach去寫sql語句,collection中的是person物件,person。xx便可以取得屬性值 addpersons insert into pers...

mybatis的批量插入

mybatis的批量插入在開發中應該比較常見,在這裡直接引入乙個簡單的例子便可一目了然,mybatis批量插入的效率不言而喻,比使用for迴圈不是簡單的效率問題,加入說向10w級使用者量的小應用推送訊息,同時儲存每個使用者的推送訊息記錄,如果使用for迴圈,可能出現的場景可能是伺服器掛掉,100w次...

Mybatis 分頁的兩種實現方法

mysql的分頁語句select from user limit startindex 起始位置 預設是0開始 pagesize 頁面大小 如何計算出當前頁面 currentpage currentpage 1 pagesize使用limit實現分頁 編寫dao介面 查詢全部使用者實現分頁 list...