[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…),可以让程序员 ...
随机推荐
- ASP.NET IHttpModule IHttpHandler IHttpHandlerFactory 拦截请求
先来看看代码,拦截所有Http请求类.下面包含了两种类的集成 IHttpModule IHttpHandlerFactory using System; using System.Collection ...
- mORMot学习笔记 (一)
官方网站:https://synopse.info/fossil/wiki/Synopse+OpenSource 下载地址:https://synopse.info/fossil/wiki?name= ...
- ST3 C程序自动补全
参考: http://www.cnblogs.com/heleifz/p/3404600.html http://www.cnblogs.com/By-ruoyu/p/4687196.html htt ...
- 01_Redis简述
一:关系型数据库和非关系型数据库的区别: 1:关系型数据库(SQL):数据和数据之间,表和字段之间,表和表之间是存在关系的: 优点:数据之间有关系,进行数据的增删改查时非常方便的:关系型数据库有事务操 ...
- linux 设备驱动与应用程序异步通知
一.异步通知机制简介 异步通知机制的意思:一旦设备准备就绪,可以主动的通知应用程序进行相应的操作,从而使得应用程序不必去查询设备的状态. 异步通知比较准确的称谓是"信号驱动的异步IO&quo ...
- Build with runtime packages
编译问题:为什么我去掉Build with runtime packages,编译没问题??? 如果不去掉,就有错误:[Linker Error] Unresolved external 'TXNet ...
- Loadrunner:脚本编写通用模板(Http协议类型)
1. 背景 对于 Http协议,Loadrunner 脚本可以使用通用模板反复粘贴,只需要修改其中的 URL 和 传参,就可以完成一整个业务 2. Get 类型的接口 web_custom_reque ...
- Python 字符串 (3) 持续更新
字符串操作 虽然字符串也是一种序列,但是它和元组一样,不可变的.当你想对它修改时,会引发异常.如 >>> strings = "Let's go">> ...
- Java笔记(第五篇)
抛出异常 使用throws声明抛出异常 Throws 通常用于方法声明,当方法中可能存在异常,却不想在方法中对异常进行处理时,就可以在声明方法时使用throws声明抛出的异常,然后再调用该方法的其他方 ...
- 关于iar intrinsics.h is already included previously!报错的问题及解决办法
用最新的cubemx生成f103的代码(带freertos系统),如果用iar编译,可能会出现intrinsics.h is already included previously!的错误,如果没有待 ...