为了减少数据库访问压力,可以在适当的情况下采用Ibatis批量执行。例子如下:
import java.util.ArrayList;
/**
* 关健字缓存(通过单例来处理)
*
* @author
* @version v 0.1 2012-3-16 下午05:14:06
*/
public class KeywordSingleton extends ArrayList<String>{
/** */
private static final long serialVersionUID = -6177039723625154736L;
/** 缓存关健字size */
public static final int cacheSize = 10;
private static final KeywordSingleton instance = new KeywordSingleton();
/**
* 私有构造方法
*/
private KeywordSingleton(){}
/**
* 返回唯一实例
* @return
*/
public static KeywordSingleton getInstance(){
return instance;
}
}
//方法
public void recordKeyword(final String keyword) {
super.getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
@Override
public Object doInSqlMapClient(SqlMapExecutor executor)
throws SQLException {
executor.startBatch();// 开始批处理
//采用单例进行保存数据
KeywordSingleton.getInstance().add(keyword);
if (KeywordSingleton.getInstance().size() == KeywordSingleton.cacheSize) {
for (int i = 0; i < KeywordSingleton.getInstance().size(); i++) {
executor.update("KEYWORDS.recordKeyword", KeywordSingleton
.getInstance().get(i));
}
executor.executeBatch();// 执行批处理
KeywordSingleton.getInstance().clear();// 执行完后清空数组
log.info("清空关健字缓存数组:"
+ KeywordSingleton.getInstance().size());
}
return null;
}
});
}
分享到:
相关推荐
通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...
本篇将深入探讨如何在Ibatis中实现批量插入数据的DAO(Data Access Object)实例,以及相关的源码分析。 首先,Ibatis允许我们通过SQL映射文件来定义SQL语句,这种方式比传统的JDBC更加灵活且易于维护。批量插入...
例如,当需要批量插入多条数据时,可以将数据集放入List中,然后在SQL语句中使用iterate标签遍历这个List。iterate标签的基本语法是`(" close=")" conjunction=","/>`,其中`property`指定了集合属性的名称,`open`...
在IT领域,尤其是在数据库操作与框架应用中,批量插入数据是一项常见且重要的需求。相比于单条插入,批量插入能够显著提升数据处理效率,减少数据库I/O操作,从而提高整体性能。本文将深入探讨如何利用MyBatis框架...
### iBatis批量处理知识点详解 #### 一、iBatis基本实现 iBatis(现已更名为MyBatis)是一款优秀的持久层框架,它支持定制化SQL、存储过程及高级映射。iBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果...
在本文中,我们将深入探讨iBatis框架中的“ibatis批量”功能,特别是如何利用iBatis进行批量数据处理,包括批量插入、更新和删除操作。我们将通过解析提供的文件片段来阐述这一知识点,重点放在如何使用`<iterate>`...
这种方法使用iterate标签来批量插入数据,但是Oracle不支持一个insert语句中包含多个values的方式。这意味着,如果你想插入多行数据,你需要执行多个insert语句,这将导致性能问题。例如: ``` <![CDATA[ insert ...
首先,批量插入(Insert Batch)在Ibatis中可以通过动态SQL来实现。在映射文件中,你可以定义一个包含多个`<insert>`标签的SQL语句,每个`<insert>`标签对应一条插入语句。然后通过`<foreach>`标签遍历传入的Java...
- 批量操作:如何利用iBATIS进行批量插入、更新或删除。 - 动态SQL的最佳实践:分享编写高效动态SQL的技巧和注意事项。 通过深入学习这些文档,开发者可以熟练掌握iBATIS.NET,实现高效、灵活的数据访问,同时...
Ibatis提供了两种执行器:SimpleExecutor和BatchExecutor,分别对应单条SQL执行和批量SQL执行。 5. ParameterMap和ParameterHandler:它们负责参数的设置和处理,ParameterMap代表了SQL参数的映射关系,而...
在iBatis中,实现批量删除可以通过动态SQL,使用`IN`操作符结合`<foreach>`标签,将选中的ID集合传入SQL语句中。 2. **小组审核管理** - **问题1**: 建议优化`search`方法,使用联合查询替代多条SQL语句。iBatis...
- **Insert**: 插入数据,支持自动获取自增主键值。 - **Update**: 更新数据,可以根据条件更新特定记录。 - **Delete**: 删除数据,根据指定条件删除匹配的记录。 **iBatis SQL Maps入门教程** 入门教程通常从...
10. **Batch Operations**: iBATIS 支持批量操作,如插入、更新和删除,可以提高数据处理效率。 从描述 "ibatis-2.3.ibatis-2.3.ibatis-2.3" 看,似乎是在强调这个版本,但并没有提供额外的信息。标签 "ibat" 显然...
此方法实现了批量插入的功能,通过`SqlMapClientTemplate`进行操作,并且每500条数据执行一次批量提交,以减少网络传输次数,提高性能。 #### 五、性能优化 批量操作相比于单条数据操作有显著的性能优势。根据实际...
此外,文档还特别强调了如何通过iBATIS来调用存储过程,这是数据库操作中的一个重要特性,尤其是在处理复杂逻辑或批量操作时。 **iBATIS-SqlMaps-2-Tutorial_cn.pdf** 作为教程,这份文档提供了逐步指导,帮助读者...
1. **批处理**:通过设置 SqlSession 的 flushCache 和 autoCommit 属性,可以实现批量插入、更新等操作,提高性能。 2. **合理使用缓存**:根据业务需求调整缓存策略,避免不必要的数据库访问。 **七、与其他技术...
在Ibatis中,可以通过设置SqlSession的flushCache和useCache属性,以及使用批处理执行器ExecutorType.BATCH,来实现批量插入、更新或删除。例如,在插入1万条数据时,将这些操作放在同一个SqlSession中,而不是逐一...
- **ScriptRunner**:允许开发者通过脚本来执行SQL语句,对于批量导入数据或者执行复杂的初始化脚本非常有用。 #### 三、ibatis配置详解 在ibatis中,配置文件通常包括`sqlmap`、`datasource`、`settings`等元素,...