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支持代码级事务处理的更多相关文章

  1. 【Mybatis】MyBatis之Generator自动生成代码(九)

    MyBatis Generator 简介 MyBatis Generator 连接数据库表并生成MyBatis或iBatis文件.这有助于最大限度地减少使用MyBatis时为数据库文件创建简单CRUD ...

  2. MyBatis使用Generator自动生成代码

    MyBatis中,可以使用Generator自动生成代码,包括DAO层. MODEL层 .MAPPING SQL映射文件. 第一步: 配置好自动生成代码所需的XML配置文件,例如(generator. ...

  3. 02 使用Mybatis的逆向工程自动生成代码

    1.逆向工程的作用 Mybatis 官方提供了逆向工程,可以针对数据库表自动生成Mybatis执行所需要的代码(包括mapper.xml.Mapper.java.pojo). 2.逆向工程的使用方法 ...

  4. mybatis逆向工程--自动生成实体代码(mybatis-generator)

    随便找个目录,  添加文件, 如图 主要是两个jar包,  generator的下载路径:   https://github.com/mybatis/generator/releases   驱动包随 ...

  5. Eclipse 使用mybatis generator插件自动生成代码

    Eclipse 使用mybatis generator插件自动生成代码 标签: mybatis 2016-12-07 15:10 5247人阅读 评论(0) 收藏 举报 .embody{ paddin ...

  6. 使用Mybatis的逆向工程自动生成代码

    1.逆向工程的作用 Mybatis 官方提供了逆向工程,可以针对数据库表自动生成Mybatis执行所需要的代码(包括mapper.xml.Mapper.java.pojo). 2.逆向工程的使用方法 ...

  7. Spring Boot MyBatis 通用Mapper 自动生成代码

    一.在pom.xml文件中进入mybatis自动生成代码相关的jar包: 注意: <configurationFile>标签中配置的是“generatorConfig.xml”文件位置. ...

  8. MyBatis框架之mybatis逆向工程自动生成代码

    http://www.jb51.net/article/82062.htm Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们 ...

  9. mybatis 逆向工程(通过数据库表针对单表自动生成mybatis执行所需要的代码)

    mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.mapper.xml.pojo…),可以让程序员 ...

随机推荐

  1. oracle的listagg函数

    今天需要将 BDST_ID相同的PROJECT_ID用逗号分隔拼成一个字符串,于是想到了oracle的listagg函数 表名为PM_BDST_PROJECT select tt.BDST_ID, l ...

  2. 忘记root密码,修改方法

    Linux的root密码修改不像Windows的密码修改找回,Windows的登录密码忘记需要介入工具进行解决.CentOS6和CentOS7的密码方法也是不一样的,具体如下: 首先是CentOS 6 ...

  3. JPA中的复杂查询

    JPQL全称Java Persistence Query Language 基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在 ...

  4. myBatis的坑 01 %的坑 框架内置的小BUG

    <select id="queryUserLikeUserName" resultType="cn.itcast.pojo.User"> selec ...

  5. 多线程模块的condition对象

    Python提供的Condition对象提供了对复杂线程同步问题的支持.Condition被称为条件变量,除了提供与Lock类似的acquire和release方法外,还提供了wait和notify方 ...

  6. ftp服务器终端登录后乱码处理方法

    首先在windows上用资源管理器登录看看会不会乱码,如果不会,说明是GBK编码 因为windows默认是GBK(936),linux默认(UTF-8) 因为FTP服务器我们修改不了,如果用linux ...

  7. bat 提示窗口,带换行

    bat 提示窗口 各种窗口样式 mshta vbscript:msgbox("内容1",1,"标题1")(window.close) mshta vbscrip ...

  8. JSP常用标签

    JSP常用标签可以理解为JSTL user:普通用户 admin:站点管理员 JSTL1.1.2下载地址:http://archive.apache.org/dist/jakarta/taglibs/ ...

  9. 【bfs分层图 dp】hihocoder#1147 : 时空阵

    最短路径树上分层dp的一类套路吧 题目大意 幽香这几天学习了魔法,准备建造一个大型的时空传送阵. 幽香现在可以在幻想乡的n个地点建造一些传送门,如果她建造了从地点a与地点b之间的传送门,那么从a到b和 ...

  10. Java项目出现的问题02----学习

    1 框架配置无.java 在框架配置中当需要写类名是,注意是没有后面.java的 2 类中找不到main方法请将main方法定义为public static void main. 否则 JavaFX ...