mybatis批量插入語句(Oracle)


mybatis配置文件里面sql寫法(因為是oracle數據庫,所以statement的寫法和 MySQL 有些不同)

<!-- 批量插入用戶 -->
<insert id="insertUserByBatch" parameterType="java.util.List">
INSERT INTO TEST1

(NAME,AGE)

SELECT A.*

FROM(

<foreach collection="list" item="test1" index="index"
separator="UNION ALL">

SELECT

#{test1.name,jdbcType=VARCHAR},
#{test1.age,jdbcType=INTEGER}

FROM dual

</foreach>

) A

</insert>

 

service層

 

public void insertUserByBatch(List<Test1> list) {
// TODO Auto-generated method stub

// 2.分頁數據信息
int totalSize = list.size(); // 總記錄數
int pageSize = 1000; // 每頁N條 1000條每次 測試10w條 大概3s多
int totalPage = totalSize / pageSize; // 共N頁

if (totalSize % pageSize != 0) {
totalPage += 1;
if (totalSize < pageSize) {
pageSize = list.size();
}
}

long befortime = System.currentTimeMillis();

//臨時list
List<Test1> tempList = new ArrayList<Test1>();

for (int pageNum = 1; pageNum < totalPage + 1; pageNum++) {
int starNum = (pageNum - 1) * pageSize;
int endNum = pageNum * pageSize > totalSize ? (totalSize) : pageNum * pageSize;
System.out.println("起始:" + starNum + "-" + endNum );



for (int i = starNum; i < endNum; i++) {
tempList.add(list.get(i));



}

userMapper.insertUserByBatch(tempList);
tempList.clear();
System.out.println("success!");


}

long aftertime = System.currentTimeMillis();
System.out.println("castime:" + (aftertime - befortime) + " ms");

}

 


免責聲明!

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



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