Jeecg 如何執行批量insert或者update操作,高效率


 方法:org.jeecgframework.core.common.dao.jdbc.SimpleJdbcTemplate.batchUpdate
     原理: 基於springjdbc封裝,批量提交

在spring batch中,我們經常使用spring提供的jdbcTemplate進行數據庫操作。

假設有一張表People.我們需要插入多條數據。處理的方法有兩種:

第一種方法是對每一個數據,都執行一直insert命令:

jdbcTemplate.update(INSERT_PEOPLE_QUERY, people.getFirstName(), people.getLastName());

第二種方法是使用batchUpdate的方法:

jdbcTemplate.batchUpdate(INSERT_PEOPLE_QUERY, transformToObjects(peoples));
private List<Object[]> transformToObjects(List<People> peoples) {        
return from(peoples).transform(new Function<People, Object[]>() {
@Override
public Object[] apply(People people) {
return new Object[]{people.getFirstName(), people.getLastName()};
}
}).toList();
}

 

如果需要大量更新數據,並且使用的jdbc driver支持batchUpdate的情況下,使用batchUpdate會比直接執行逐行執行update效率快一個數量級。但如果jdbc不支持batchUpdate,那么jdbcTemplate的batchUpdate在其內部仍然是逐行執行。

我使用postgreSQL進行試驗:

當需要插入1000個People時,逐行插入需要4秒,使用batchUpdate需要時間不到1秒

當需要插入10000個People時,逐行插入需要17秒,使用batchUpdate僅僅需要1秒


免責聲明!

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



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