在系统中,提取数据循环计算后,每次需要有大概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%的性能,大家不妨在项目中使用一下。
分享到:
相关推荐
ExecutorType.BATCH则适合批量操作,能有效减少数据库交互次数,提升多线程环境下的性能。 7. **同步锁机制**:在特定场景下,如全局唯一ID生成,可以使用synchronized关键字或者Lock接口(如ReentrantLock)来实现...
例如,在插入1万条数据时,将这些操作放在同一个SqlSession中,而不是逐一提交,可以显著减少数据库交互次数,从而提升效率。在这个例子中,"不到2秒"完成1万条数据的插入,体现了批处理的高效性。 接下来是事务...
iBATIS支持批处理功能,通过批处理可以减少与数据库的交互次数,从而提升性能。 在iBATIS中进行批处理主要有两种方式: 1. **Spring模式下的批处理** 在Spring框架中,iBATIS与Spring的事务管理相结合,可以方便...
1. 安装和配置:介绍如何将Ibatis集成到项目中,包括Maven或Gradle依赖、Spring整合等。 2. 映射文件和SQL语句:讲解如何编写XML映射文件,包括插入、更新、删除和查询等操作。 3. 动态SQL:Ibatis的动态SQL功能...
此方法实现了批量插入的功能,通过`SqlMapClientTemplate`进行操作,并且每500条数据执行一次批量提交,以减少网络传输次数,提高性能。 #### 五、性能优化 批量操作相比于单条数据操作有显著的性能优势。根据实际...
14. **与其他框架集成**:探讨如何将iBatis与Spring、Hibernate等其他框架集成,构建更强大的企业级应用。 这本指南对于初学者和有经验的开发者来说都是宝贵的资源,它帮助读者理解iBatis的工作原理,掌握其核心...
iBatis支持手动和自动事务管理,开发者可以通过TransactionManager来控制事务的提交和回滚。同时,它也支持Spring的声明式事务管理。 7. **插件支持** iBatis提供插件机制,通过拦截器(Interceptor)可以在SQL...
它可以确保数据的一致性和完整性,尤其是在进行批量操作时更为关键。 - **手动控制事务**:开发者可以在业务逻辑中显式地开启和提交/回滚事务。 - **自动管理事务**:通过配置文件或注解的方式,让iBATIS自动管理...
7. **实际开发应用**:这部分可能包括了iBATIS在实际项目中的最佳实践,如如何处理批量操作,如何优化性能,以及如何与其他框架(如Spring)集成等。 8. **案例分析**:可能会有实际的代码示例和案例研究,帮助读者...
总之,iBATIS 提供了一种高效、灵活的方式来处理数据库操作,通过深入学习和实践,开发者能够更好地管理和控制数据库操作,提升项目的开发效率和质量。希望这个教程能帮助你理解和掌握iBATIS的核心技术和应用场景。
开发者可以通过SqlSession对象控制事务的提交和回滚,也可以与Spring等框架集成,实现声明式事务管理。 6. 异常处理:MyBatis提供了一套丰富的异常体系,如`org.apache.ibatis.exceptions.PersistenceException`,...