[MyBatis] 如何让MyBatis支持代码级事务处理
MyBatis提供的sqlSession对象是可以用来帮助我们实现事务处理的,方式和JDBC的类似,具体请见代码:
import java.sql.Connection;
import java.sql.SQLException;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import jp.co.rakuten.rtms.batch.common.exception.BatchApplicationException;
/**
* To verify the possibility of commit/rollback after a part of code
* @author Heyang
* @date 19.10.04
*/
@Component
public class SweepawayExpiredDataInDB_TestRollback2 extends AbstractJob implements Job {
/** SQL実行クラス */
@Autowired
private SqlSession session;
@Override
public void doExecute(String[] args) {
logger.info("SweepawayExpiredDataInDB_TestRollback started.");
long startTime = System.currentTimeMillis();
try {
logger.info("isAutoCommit="+session.getConnection().getAutoCommit());
Connection conn = session.getConnection();
conn.setAutoCommit(false);
try {
for(int i=0;i<10;i++) {
Map<String, String> para=new HashMap<String, String>();
para.put("id",String.valueOf(i));
para.put("name","Andy"+i);
session.insert("insertEmp", para);
}
conn.commit();
logger.info("1.Committed");
} catch (Exception e) {
conn.rollback();
logger.info("1.Rollbacked");
e.printStackTrace();
}
try {
for(int i=0;i<10;i++) {
Map<String, String> para=new HashMap<String, String>();
para.put("id",String.valueOf(i));
para.put("name","Andy"+i);
session.insert("insertEmp", para);
}
conn.commit();
logger.info("2.Committed");
} catch (Exception e) {
conn.rollback();
logger.info("2.Rollbacked");
e.printStackTrace();
}
try {
for(int i=0;i<10;i++) {
Map<String, String> para=new HashMap<String, String>();
para.put("id",String.valueOf(100+i));
para.put("name","Cindy"+i);
session.insert("insertEmp", para);
}
conn.rollback();
logger.info("3.Rollback mannualy");
} catch (Exception e) {
conn.rollback();
logger.info("2.Rollbacked");
e.printStackTrace();
}
//conn.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{ session.close(); }
long endTime = System.currentTimeMillis();
double seconds=((double)endTime - (double)startTime)/1000;
logger.info("Time elapsed:" + seconds + "s");
logger.info("SweepawayExpiredDataInDB_TestRollback completed.");
}
}
--END-- 19.10.04 11:12
[MyBatis] 如何让MyBatis支持代码级事务处理的更多相关文章
- 【Mybatis】MyBatis之Generator自动生成代码(九)
MyBatis Generator 简介 MyBatis Generator 连接数据库表并生成MyBatis或iBatis文件.这有助于最大限度地减少使用MyBatis时为数据库文件创建简单CRUD ...
- MyBatis使用Generator自动生成代码
MyBatis中,可以使用Generator自动生成代码,包括DAO层. MODEL层 .MAPPING SQL映射文件. 第一步: 配置好自动生成代码所需的XML配置文件,例如(generator. ...
- 02 使用Mybatis的逆向工程自动生成代码
1.逆向工程的作用 Mybatis 官方提供了逆向工程,可以针对数据库表自动生成Mybatis执行所需要的代码(包括mapper.xml.Mapper.java.pojo). 2.逆向工程的使用方法 ...
- mybatis逆向工程--自动生成实体代码(mybatis-generator)
随便找个目录, 添加文件, 如图 主要是两个jar包, generator的下载路径: https://github.com/mybatis/generator/releases 驱动包随 ...
- Eclipse 使用mybatis generator插件自动生成代码
Eclipse 使用mybatis generator插件自动生成代码 标签: mybatis 2016-12-07 15:10 5247人阅读 评论(0) 收藏 举报 .embody{ paddin ...
- 使用Mybatis的逆向工程自动生成代码
1.逆向工程的作用 Mybatis 官方提供了逆向工程,可以针对数据库表自动生成Mybatis执行所需要的代码(包括mapper.xml.Mapper.java.pojo). 2.逆向工程的使用方法 ...
- Spring Boot MyBatis 通用Mapper 自动生成代码
一.在pom.xml文件中进入mybatis自动生成代码相关的jar包: 注意: <configurationFile>标签中配置的是“generatorConfig.xml”文件位置. ...
- MyBatis框架之mybatis逆向工程自动生成代码
http://www.jb51.net/article/82062.htm Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们 ...
- mybatis 逆向工程(通过数据库表针对单表自动生成mybatis执行所需要的代码)
mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.mapper.xml.pojo…),可以让程序员 ...
随机推荐
- c#向指定的邮箱发送邮件
private bool SendEmail(string fileName) { MailMessage m_Mail = new MailMessage(); m_Mail.From = new ...
- asp.net frameworke处理程序的作用
1 向客户端发送响应的工作都由处理程序完成 2 任何实现System.web.ihttpHandler接口的类都可以作为传入的http请求的目标 3 如果需要重复使用自定义处理程序对象,需要创建自定义 ...
- C++ DLL导出的两种方式和链接的两种方式
第一种 导出方式 extern "C" _declspec(dllexport) int Plus(int x, int y); extern "C" _dec ...
- asp.net 页面静态化
页面静态化,有三种方式 伪静态 真静态,折中法 现在我做的是折中发 创建一个asp.net 页面, 连接跳转到还未生成的页面 创建HttpHandle类 using System;using ...
- sql 拼接字符串单条拆分多条
SELECT * FROM ( SELECT A.WS_ID , B.NEXT_OPERATOR FROM ( SELECT WS_ID , [NEXT_OPERATOR] = CONVERT(XML ...
- GenericJDBCException: could not execute statement 错误解决
"message":"could not execute statement; nested exception is org.hibernate.exception.G ...
- CF827D Best Edge Weight[最小生成树+树剖/LCT/(可并堆/set启发式合并+倍增)]
题意:一张图求每条边边权最多改成多少可以让所有MST都包含这条边. 这题还是要考察Kruskal的贪心过程. 先跑一棵MST出来.然后考虑每条边. 如果他是非树边,要让他Kruskal的时候被选入,必 ...
- jvm crash分析
问题描述:线上进程异常退出,查看服务器端日志,有jvm crash文件生成 # # A fatal error has been detected by the Java Runtime Enviro ...
- Eclipse中给jar包导入JavaDoc注释文档的方法
原文链接:http://www.apkbus.com/android-124056-1-1.html 第一步:将jar加入到Referenced Libraries 右键点击jar --> 选择 ...
- [MySQL优化] -- 如何使用SQL Profiler 性能分析器
mysql 的 sql 性能分析器主要用途是显示 sql 执行的整个过程中各项资源的使用情况.分析器可以更好的展示出不良 SQL 的性能问题所在. 下面我们举例介绍一下 MySQL SQL Profi ...