ibatis循环处理与批处理--以插入操作为例
1.循环处理
循环操作的ibatis配置
<!-- 插入一条记录 -->
<insert id="insertUser" parameterClass="User">
<![CDATA[
insert into user(
id,
userName,
passWord
)values(
#id#,
#userName#,
#passWord#
)
]]>
</insert>
循环操作的Junit测试
/**
* 循环插入一条用户记录
* @throws Exception
*/
public void insertTest() throws Exception{
Long oldTime = System.currentTimeMillis();
//System.out.println(oldTime);
for(int i= 0; i < 10000 ; i++){
User user = new User();
user.setId(String.valueOf(i));
user.setUserName("用户"+ i);
user.setPassWord("user"+ i);
new UserDaoImpl().insert(user);
System.out.println(i);
}
System.out.println("循环插入多条记录所花费的时间:"+ (System.currentTimeMillis()-oldTime)/1000.00 +"s");
}
2.批处理
批处理的ibatis配置
<!-- 插入多条记录 -->
<insert id="insertUserList" parameterClass="java.util.List">
<![CDATA[
insert into user(
id,
userName,
passWord
) values
]]>
<iterate conjunction=",">
<![CDATA[
(
#list[].id#,
#list[].userName#,
#list[].passWord#
)
]]>
</iterate>
</insert>
批处理Junit测试
/**
* 插入多条记录 --快
* @throws Exception
*/
public void insertListTest() throws Exception{
Long oldTime = System.currentTimeMillis();
//System.out.println(oldTime);
List<User> users = new ArrayList<User>();
for(int i=0; i< 10000; i++){
User user = new User();
user.setId(String.valueOf(i));
user.setUserName("用户"+ i);
user.setPassWord("user"+ i);
users.add(user);
System.out.println(i);
}
new UserDaoImpl().insertList(users);
System.out.println("一次插入多条记录所花费的时间:"+ (System.currentTimeMillis()-oldTime)/1000.00 +"s");
}
从上面的例子能够测试出批处理的性能高于循环处理的性能。在实际的项目中,对于一次需要插入多条数据,应该使用批处理。
分享到:
相关推荐
- **预编译语句(PreparedStatement)**:iBATIS批处理默认使用预编译语句,这可以进一步提高性能,因为数据库只需解析SQL语句一次。 综上所述,iBATIS的批处理功能通过在事务内执行一组数据库操作,可以显著提高...
iBatis 批处理是一种高效的数据操作方式,尤其在处理大量数据时,可以显著提高性能。iBatis 提供了两种批处理的实现方法:在代码中直接进行循环操作和在配置文件中进行循环操作。 **1. 直接在代码中进行循环操作** ...
接着,批处理操作是提高性能的关键。在Ibatis中,可以通过设置SqlSession的flushCache和useCache属性,以及使用批处理执行器ExecutorType.BATCH,来实现批量插入、更新或删除。例如,在插入1万条数据时,将这些操作...
6. 缓存:Ibatis提供了本地缓存和二级缓存机制,有助于提高性能。 7. 执行性能:提供优化建议,如批处理、缓存使用等,以提升应用程序的运行效率。 总之,Ibatis是一个强大且灵活的Java持久层框架,其API、文档和...
为了解决这个问题,ibatis(现已更名为MyBatis)提供了一种支持批量更新的机制,能够显著提高数据处理的速度。 #### 批量Update背景与问题 在实际应用中,经常会遇到需要批量更新数据库中的数据的情况,例如:商品...
1. SqlMapClient:它是iBATIS的主要接口,负责执行SQL映射和批处理操作。提供多种方法如queryForObject、queryForMap等,用于执行不同的查询或更新操作。 2. sqlmapconfig.xml:这是iBATIS的全局配置文件,包含了...
8. **性能优化**:提供一些关于提高iBATIS性能的建议,如合理设计SQL、使用批处理等。 《ibatis.pdf》可能是iBATIS的官方文档或综合指南,可能包含更广泛的内容,如最佳实践、高级特性、与其他框架的集成等。 ...
批处理是提高数据库操作效率的一种重要手段,Ibatis也支持批处理功能。在批量存储场景下,批处理可以一次性提交多个SQL语句,减少与数据库的交互次数,从而提升性能。使用Ibatis的批处理,首先需要开启SqlSession的...
1. SqlMapClient:它是iBATIS的主要接口,负责执行SQL映射和批处理操作。提供了如queryForObject、queryForMap等方法来执行查询或更新操作。 2. sqlmapconfig.xml:这是全局配置文件,定义了数据源、事务管理器等...
iBatis提供了批处理功能,可以在一次数据库连接中执行多个SQL语句,这极大地提高了处理大量数据时的性能。iBatis通过`SqlMapClient`接口提供了几个关键方法来实现批处理: 1. **`startBatch()`**:开始批处理。 2. ...
9. **性能优化**:通过预编译SQL语句、批处理等技术,iBATIS能够有效地提高数据库操作的性能。 总之,"ibatis jar包.zip" 提供了使用iBATIS框架进行数据库访问所需的全部组件,使得开发者能够快速地构建数据驱动的...
1. **批处理**:通过设置 SqlSession 的 flushCache 和 autoCommit 属性,可以实现批量插入、更新等操作,提高性能。 2. **合理使用缓存**:根据业务需求调整缓存策略,避免不必要的数据库访问。 **七、与其他技术...
它提供了两种基本的执行模式:SimpleExecutor(简单执行器)和BatchExecutor(批处理执行器),前者每次执行一条SQL,后者则将多条SQL语句合并成一个批处理,提高效率。 4. **ParameterMap**与**ParameterMapping**...
这意味着,当面对某些特定环境,如数据安全限制、业务逻辑需在数据库层实现或系统性能极端敏感时,ibatis因其灵活的SQL定制能力和更高的设计自由度而成为更优选择。 #### ibatis基础语义 - **...
5. **缓存机制**:为了提高性能,iBATIS内置了缓存机制,可以在内存中缓存查询结果,减少不必要的数据库访问。 6. **数据源配置**:支持多种数据源,可以根据需求选择不同的数据库连接方式,如单例、连接池等。 7....
6. **缓存机制**:iBATIS提供了一种有效的缓存机制,以提高查询性能。书中会介绍本地缓存和二级缓存的配置和使用,以及缓存策略的优化。 7. **动态SQL**:iBATIS的一大亮点在于它的动态SQL能力,可以避免大量硬编码...
9. **性能优化**:探讨如何通过缓存机制、批处理、预编译SQL等方式提升iBATIS的性能。 10. **实战案例**:通过实际项目中的例子,如用户管理、订单处理等,深入体验iBATIS在实际开发中的应用。 11. **源码分析**:...
- **批处理**:对于大量数据的插入或更新操作,可以使用批处理来提高效率。 - **执行SQL语句**:通过`SqlMapClient`接口提供的方法执行SQL语句。 #### 示例代码 - **执行更新操作**:使用`update`方法执行INSERT...
为了提高性能,iBATIS支持对MappedStatement的结果集进行缓存,包括只读缓存和可读写缓存。 ### 动态MappedStatement 动态SQL是iBATIS的一个强大功能,允许根据运行时的条件动态生成SQL语句,支持条件判断、循环等...
- 性能优化:提供性能调优的策略,包括缓存使用、批处理等技巧。 这四本教程全面覆盖了iBATIS的核心概念和实践应用,无论你是初学者还是有经验的开发者,都能从中受益。通过学习,你将能够有效地利用iBATIS来提升...