利用Ibatis执行批量插入更新数据库操作
2018-01-23 17:46
701 查看
刚开始接触springmvc+ibatis架构时遇到批量插入更新数据库的问题。
[java] view
plain copy
public class BaseDao extends SqlMapClientDaoSupport {
@Resource(name = "sqlMapClient")
private SqlMapClient sqlMapClient;
@PostConstruct
public void initSqlMapClient() {
super.setSqlMapClient(sqlMapClient);
}
}
BaseDao一般的写法如上,在继承basedao后,我们使用this.getSqlMapClientTemplate()方法调用现成的数据库操作方法(增删改查),但是这里面却没有批量操作方法
我们需要利用execute和SqlMapClientCallback
[java] view
plain copy
protected void batchInsert(final List<T> objList, final String statment, final int i) throws DataAccessException {
this.getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
public T doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
executor.startBatch();
int batch = 0;
for (T obj : objList) {
executor.insert(statment, obj);
batch++;
if (batch == i) {
executor.executeBatch();
batch = 0;
}
}
executor.executeBatch();
return null;
}
});
}
/**
* 批量更新
*
* @param objList
* 更新对象类表
* @param statment
* sqlID名称
* @param i
* 更新数量
* @throws DataAccessException
*/
@SuppressWarnings("unchecked")
protected void batchUpdate(final List<T> objList, final String statment, final int i) throws DataAccessException {
this.getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
public T doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
executor.startBatch();
int batch = 0;
for (T obj : objList) {
executor.update(statment, obj);
batch++;
if (batch == i) {
executor.executeBatch();
batch = 0;
}
}
executor.executeBatch();
return null;
}
});
}
同时要修改basedao
[java] view
plain copy
public class BaseDao<T extends Entity> extends SqlMapClientDaoSupport
这样就能在自己的dao层中直接调用批量方法...
[java] view
plain copy
public class BaseDao extends SqlMapClientDaoSupport {
@Resource(name = "sqlMapClient")
private SqlMapClient sqlMapClient;
@PostConstruct
public void initSqlMapClient() {
super.setSqlMapClient(sqlMapClient);
}
}
BaseDao一般的写法如上,在继承basedao后,我们使用this.getSqlMapClientTemplate()方法调用现成的数据库操作方法(增删改查),但是这里面却没有批量操作方法
我们需要利用execute和SqlMapClientCallback
[java] view
plain copy
protected void batchInsert(final List<T> objList, final String statment, final int i) throws DataAccessException {
this.getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
public T doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
executor.startBatch();
int batch = 0;
for (T obj : objList) {
executor.insert(statment, obj);
batch++;
if (batch == i) {
executor.executeBatch();
batch = 0;
}
}
executor.executeBatch();
return null;
}
});
}
/**
* 批量更新
*
* @param objList
* 更新对象类表
* @param statment
* sqlID名称
* @param i
* 更新数量
* @throws DataAccessException
*/
@SuppressWarnings("unchecked")
protected void batchUpdate(final List<T> objList, final String statment, final int i) throws DataAccessException {
this.getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
public T doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
executor.startBatch();
int batch = 0;
for (T obj : objList) {
executor.update(statment, obj);
batch++;
if (batch == i) {
executor.executeBatch();
batch = 0;
}
}
executor.executeBatch();
return null;
}
});
}
同时要修改basedao
[java] view
plain copy
public class BaseDao<T extends Entity> extends SqlMapClientDaoSupport
这样就能在自己的dao层中直接调用批量方法...
相关文章推荐
- 利用Ibatis执行批量插入更新数据库操作
- Android Sqlite数据库执行插入查询更新删除的操作对比
- 1.利用android提高的的insert,query,update,deleteAPI与execSql,rawQuery函数执行原生的插入,查询,更新,删除语句操作花费时间的对比结果
- 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题
- ibatis对oracle数据库的批量更新和批量插入的操作
- 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题
- ibatis对oracle数据库的批量更新和批量插入的操作
- .net中利用oracle产品自带的数据访问组件(Oracle.DataAccess.dll)提升批量更新操作的执行效率
- 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题
- .net中利用oracle产品自带的数据访问组件(Oracle.DataAccess.dll)提升批量更新操作的执行效率
- 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题 分类: .NET 2015-06-18 14:39 31人阅读 评论(0) 收藏
- 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题
- 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题
- 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题
- Android Sqlite数据库执行插入查询更新删除的操作对比
- 读取大数据量excel并执行批量更新数据库操作
- 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题
- ibatis 如何利用自增主键插入数据库
- jdbc操作数据库插入、更新、删除、查找
- ThinkPHP 数据库操作,插入,更新,删除,查询