spring+ibatis 批量提交数据提升性能
2013-03-11 09:59
351 查看
http://www.iteye.com/topic/340334
在系统中,提取数据循环计算后,每次需要有大概3000条左右的数据需要提交到数据库。以前在循环中单条插入,开始只有200条左右的数据,看不出性能上的问题,现在数据量增长了很多,所以需要对提交功能做一下优化。spring集成了ibatis的批量提交的功能,我们只要调用API就可以了
首先在你的dao中需要继承
org.springframework.orm.ibatis.support.SqlMapClientDaoSupport
然后在代码中调用getSqlMapClientTemplate方法, 覆写SqlMapClientCallback类中的doInSqlMapClient的方法
public void insertTreeCateBatch(final List<TreeCate> TreeCateList) throws DataAccessException{
this.getSqlMapClientTemplate().execute(new SqlMapClientCallback(){
public Object doInSqlMapClient(SqlMapExecutor executor)
throws SQLException {
executor.startBatch();
int batch = 0;
for(TreeCate TreeCate:TreeCateList){
//调用获取sequence的方法。如果没有的话就去掉这行代码。
TreeCate.setTreeCateId(getNextId());
//参数1为:ibatis中需要执行的语句的id
executor.insert("TreeCate_insertTreeCate", TreeCate);
batch++;
//每500条批量提交一次。
if(batch==500){
executor.executeBatch();
batch = 0;
}
}
executor.executeBatch();
return null;
}
});
}
批量插入减少了获取数据库连接池的次数,经过测试可以提高60%到70%的性能,大家不妨在项目中使用一下。
在系统中,提取数据循环计算后,每次需要有大概3000条左右的数据需要提交到数据库。以前在循环中单条插入,开始只有200条左右的数据,看不出性能上的问题,现在数据量增长了很多,所以需要对提交功能做一下优化。spring集成了ibatis的批量提交的功能,我们只要调用API就可以了
首先在你的dao中需要继承
org.springframework.orm.ibatis.support.SqlMapClientDaoSupport
然后在代码中调用getSqlMapClientTemplate方法, 覆写SqlMapClientCallback类中的doInSqlMapClient的方法
public void insertTreeCateBatch(final List<TreeCate> TreeCateList) throws DataAccessException{
this.getSqlMapClientTemplate().execute(new SqlMapClientCallback(){
public Object doInSqlMapClient(SqlMapExecutor executor)
throws SQLException {
executor.startBatch();
int batch = 0;
for(TreeCate TreeCate:TreeCateList){
//调用获取sequence的方法。如果没有的话就去掉这行代码。
TreeCate.setTreeCateId(getNextId());
//参数1为:ibatis中需要执行的语句的id
executor.insert("TreeCate_insertTreeCate", TreeCate);
batch++;
//每500条批量提交一次。
if(batch==500){
executor.executeBatch();
batch = 0;
}
}
executor.executeBatch();
return null;
}
});
}
批量插入减少了获取数据库连接池的次数,经过测试可以提高60%到70%的性能,大家不妨在项目中使用一下。
相关文章推荐
- spring+ibatis 批量提交数据
- 使用Spring+Ibatis的项目,关于如何使用事务、如何提升性能的几点总结
- 使用Spring+Ibatis的项目,关于如何使用事务、如何提升性能的几点总结
- ORACLE 大数据批量更新 MERGE INTO 代替 UPDATE/INSERT INTO 提升性能
- ACCESS大批量数据写入之性能提升方案
- KAOII 系统性能提升的始末之(一)spring 配置 proxool 数据源
- 实验楼挑战3:简化数据操作提升性能
- 从源码解读Mysql 5.7性能和数据安全性的提升
- 如何提升sqlite中blob数据的查询性能
- DataBinder绑定数据--性能提升
- influxdb入门,批量插入数据提高性能
- Mobile Services 提交批量数据
- .net中利用oracle产品自带的数据访问组件(Oracle.DataAccess.dll)提升批量更新操作的执行效率
- 性能提升---在servlet的init()方法中缓存数据
- IBatis 批量插入数据
- SQLServer中批量插入数据方式的性能对比
- 批量操作可显著提升Entity Framework的性能
- Java - 使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?
- Python向Sqlite批量插入数据,测试硬盘性能
- ADO.NET数据批量提交