[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…),可以让程序员 ...
随机推荐
- oracle的listagg函数
今天需要将 BDST_ID相同的PROJECT_ID用逗号分隔拼成一个字符串,于是想到了oracle的listagg函数 表名为PM_BDST_PROJECT select tt.BDST_ID, l ...
- 忘记root密码,修改方法
Linux的root密码修改不像Windows的密码修改找回,Windows的登录密码忘记需要介入工具进行解决.CentOS6和CentOS7的密码方法也是不一样的,具体如下: 首先是CentOS 6 ...
- JPA中的复杂查询
JPQL全称Java Persistence Query Language 基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在 ...
- myBatis的坑 01 %的坑 框架内置的小BUG
<select id="queryUserLikeUserName" resultType="cn.itcast.pojo.User"> selec ...
- 多线程模块的condition对象
Python提供的Condition对象提供了对复杂线程同步问题的支持.Condition被称为条件变量,除了提供与Lock类似的acquire和release方法外,还提供了wait和notify方 ...
- ftp服务器终端登录后乱码处理方法
首先在windows上用资源管理器登录看看会不会乱码,如果不会,说明是GBK编码 因为windows默认是GBK(936),linux默认(UTF-8) 因为FTP服务器我们修改不了,如果用linux ...
- bat 提示窗口,带换行
bat 提示窗口 各种窗口样式 mshta vbscript:msgbox("内容1",1,"标题1")(window.close) mshta vbscrip ...
- JSP常用标签
JSP常用标签可以理解为JSTL user:普通用户 admin:站点管理员 JSTL1.1.2下载地址:http://archive.apache.org/dist/jakarta/taglibs/ ...
- 【bfs分层图 dp】hihocoder#1147 : 时空阵
最短路径树上分层dp的一类套路吧 题目大意 幽香这几天学习了魔法,准备建造一个大型的时空传送阵. 幽香现在可以在幻想乡的n个地点建造一些传送门,如果她建造了从地点a与地点b之间的传送门,那么从a到b和 ...
- Java项目出现的问题02----学习
1 框架配置无.java 在框架配置中当需要写类名是,注意是没有后面.java的 2 类中找不到main方法请将main方法定义为public static void main. 否则 JavaFX ...