ibatis 对事务和批量提交的处理,以及回滚的处理
2016-06-09 18:43
417 查看
//ibatis batch 示例
protected void batchCreate(final List<T> memberList, final String statement) {
SqlMapClientCallback callback = new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
executor.startBatch();
for (T tObject : memberList) {
executor.insert(statement, tObject); // statement在*MapSql.xml一条语句的id
}
executor.executeBatch();
return null;
}
};
如果有很多非查询的(insert/update/delete)语句要处理,为了减少网络通讯的流量,可以进行批处理
sqlMap.startBatch();
insert/update/delete 语句处理
sqlMap.endBatch();
try {
sqlMapClient.startTransaction(); //事务开始
Person p =
(Person)sqlMapClient.queryForObject
("getPerson", new Integer(9));
p.setLastName("Smith");
sqlMapClient.update("updatePerson", p);
Department d =
(Department)sqlMapClient.queryForObject
("getDept", new Integer(3));
p.setDepartment(d);
sqlMapClient.update("updatePersonDept", p);
sqlMapClient.commitTransaction(); //提交事务,从开始到这里是一个事务
} finally {
sqlMapClient.endTransaction(); //事务结束
}
//回滚
sqlMap.getCurrentConnection().rolback();
即可。
protected void batchCreate(final List<T> memberList, final String statement) {
SqlMapClientCallback callback = new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
executor.startBatch();
for (T tObject : memberList) {
executor.insert(statement, tObject); // statement在*MapSql.xml一条语句的id
}
executor.executeBatch();
return null;
}
};
如果有很多非查询的(insert/update/delete)语句要处理,为了减少网络通讯的流量,可以进行批处理
sqlMap.startBatch();
insert/update/delete 语句处理
sqlMap.endBatch();
try {
sqlMapClient.startTransaction(); //事务开始
Person p =
(Person)sqlMapClient.queryForObject
("getPerson", new Integer(9));
p.setLastName("Smith");
sqlMapClient.update("updatePerson", p);
Department d =
(Department)sqlMapClient.queryForObject
("getDept", new Integer(3));
p.setDepartment(d);
sqlMapClient.update("updatePersonDept", p);
sqlMapClient.commitTransaction(); //提交事务,从开始到这里是一个事务
} finally {
sqlMapClient.endTransaction(); //事务结束
}
//回滚
sqlMap.getCurrentConnection().rolback();
即可。
相关文章推荐
- 高效TDDL批量插入
- PHP笔试题
- Spring与Mybatis整合
- react-native DatePicker日期选择组件的实现
- iBatis batch处理那些事
- Spring声明式事务配置管理方法(Spring中的四种声明式事务的配置)
- 你需要了解的未来技术趋势——serverless怎样改变未来架构
- 电商之梳理maven相关知识---jar管理工具
- Flask--阿里云上部署
- 向Github提交代码时遇到的一些问题
- 数据库函数练习1
- Picasso转圆形图片
- 向Github提交代码时遇到的一些问题
- [转]观察者模式的C++范例
- Android判断是否是手机号
- react-native DatePicker日期选择组件的实现
- 把一个整数转为字符串
- 实习杂记(20):static使用结束需要注意的地方
- 电商之梳理monitor相关知识---java监控类
- 晓松谈蒋介石日记 观感