[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…),可以让程序员 ...
随机推荐
- struts-2.5.14.1中jar包引入
- 安卓开发之sql语句增删改查
package com.lidaochen.phonecall; import android.content.Context; import android.database.sqlite.SQLi ...
- mydql 函数和存储过程
存储过程 CREATE PROCEDURE getUid (IN phone CHAR(11), OUT uid INT ) READS SQL DATA BEGIN select u.id from ...
- XGBOOST in WIN64 安装
参考:https://blog.csdn.net/zyghs/article/details/50897716 环境 platform:windows 10,64位 Python: Python3.7 ...
- PHP中RabbitMQ之amqp扩展实现(四)
目前我在PHP里接触实现RabbitMQ的方式有两种,一种是通过amqp扩展,一种是使用php-amqplib,本章讲诉RabbitMQ的安装及amqp扩展及amqp扩展如何实现RabbitMQ 环境 ...
- JavaSpring【五、AOP基础】
概念: AOP--面向切面编程,通过预编译/动态代理实现程序功能的统一维护 主要功能是:日志.性能统计.安全控制.事务处理.异常处理 实现方式 预编译--AspectJ 动态代理--SpringAOP ...
- linux usb驱动记录(一)
一.linux 下的usb驱动框架 在linux系统中,usb驱动可以从两个角度去观察,一个是主机侧,一个是设备侧.linux usb 驱动的总体框架如下图所示: 从主机侧看usb驱动可分为四层: ...
- macOS 终端常用命令
macOS 常用命令 基本命令 1.列出文件 ls 参数 目录名 例:看看驱动目录下有什么:ls /System/Library/Extensions 参数 -w 显示中文,-l 详细信息,-a 包括 ...
- python .pth 文件 和 site 模块
python .pth 文件 和 site 模块 .pth 文件 该文件位于 python 的 /Lib/site-packages 目录下,可以有多个,在 .pth 文件中可以把其它目录添加到 sy ...
- go语言日期时间格式化
原文: http://www.golangprograms.com/get-current-date-and-time-in-various-format-in-golang.html package ...