`
iaiai
  • 浏览: 2204948 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mybatis3整合spring3的事务管理

    博客分类:
  • J2EE
 
阅读更多
要管理事务的service方法注入DataSourceTransactionManager

@Inject
private DataSourceTransactionManager transactionManager;


方法中:
public void init(User user, Item item) throws Exception{
        DefaultTransactionDefinition def = new DefaultTransactionDefinition();//事务定义类
        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
        TransactionStatus status = transactionManager.getTransaction(def);//返回事务对象
        try {
            dao.insert("userMapper.insert", user);     
            dao.insertList("itemMapper.insertList", items);
            if(true) throw new Exception();
            transactionManager.commit(status);
        }catch (Exception ex) {
            transactionManager.rollback(status);
        }
    }


能回滚,结果如下:
引用

2011-10-12 17:28:35,286 [org.springframework.jdbc.datasource.DataSourceUtils]-[DEBUG] Fetching JDBC Connection from DataSource
2011-10-12 17:28:35,286 [org.springframework.jdbc.datasource.DriverManagerDataSource]-[DEBUG] Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3306/test]
2011-10-12 17:28:35,700 [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Creating SqlSession with JDBC Connection [com.mysql.jdbc.JDBC4Connection@dd5f6d]
2011-10-12 17:28:35,706 [java.sql.Connection]-[DEBUG] ooo Connection Opened
2011-10-12 17:28:35,713 [org.mybatis.spring.transaction.SpringManagedTransaction]-[DEBUG] JDBC Connection [com.mysql.jdbc.JDBC4Connection@dd5f6d] will not be managed by Spring
2011-10-12 17:28:35,731 [org.mybatis.spring.SqlSessionUtils]-[DEBUG] SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@bfd849] was not registered for synchronization because synchronization is not active
2011-10-12 17:28:35,922 [java.sql.PreparedStatement]-[DEBUG] ==>  Executing: select id, nick, psw, is_sync as isSync, is_validate_psw as isValidatePsw, init_date as initDate, version_id as versionId from users where nick = ?
2011-10-12 17:28:35,922 [java.sql.PreparedStatement]-[DEBUG] ==> Parameters: test(String)
2011-10-12 17:28:35,946 [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Closing no transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@bfd849]
2011-10-12 17:28:35,948 [org.springframework.jdbc.datasource.DataSourceUtils]-[DEBUG] Returning JDBC Connection to DataSource
2011-10-12 17:28:35,953 [org.springframework.web.servlet.DispatcherServlet]-[DEBUG] Rendering view [org.springframework.web.servlet.view.InternalResourceView: unnamed; URL [init]] in DispatcherServlet with name 'dispatcher'
2011-10-12 17:28:35,953 [org.springframework.web.servlet.view.InternalResourceView]-[DEBUG] Forwarding to resource [init] in InternalResourceView 'null'
2011-10-12 17:28:35,954 [org.springframework.web.servlet.DispatcherServlet]-[DEBUG] DispatcherServlet with name 'dispatcher' processing GET request for [/test/sync/init]
2011-10-12 17:28:35,954 [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping]-[DEBUG] Mapping [/sync/init] to HandlerExecutionChain with handler [com.books.controller.SyncController@168eac0] and 1 interceptor
2011-10-12 17:28:35,954 [org.springframework.web.servlet.DispatcherServlet]-[DEBUG] Last-Modified value for [/test/sync/init] is: -1
2011-10-12 17:28:36,899 [org.springframework.jdbc.datasource.DataSourceTransactionManager]-[DEBUG] Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
2011-10-12 17:28:36,899 [org.springframework.jdbc.datasource.DriverManagerDataSource]-[DEBUG] Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3306/test]
2011-10-12 17:28:36,907 [org.springframework.jdbc.datasource.DataSourceTransactionManager]-[DEBUG] Acquired Connection [com.mysql.jdbc.JDBC4Connection@1317223] for JDBC transaction
2011-10-12 17:28:36,921 [org.springframework.jdbc.datasource.DataSourceTransactionManager]-[DEBUG] Switching JDBC Connection [com.mysql.jdbc.JDBC4Connection@1317223] to manual commit
2011-10-12 17:28:36,921 [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Creating SqlSession with JDBC Connection [com.mysql.jdbc.JDBC4Connection@1317223]
2011-10-12 17:28:36,921 [java.sql.Connection]-[DEBUG] ooo Connection Opened
2011-10-12 17:28:36,921 [org.mybatis.spring.transaction.SpringManagedTransaction]-[DEBUG] JDBC Connection [com.mysql.jdbc.JDBC4Connection@1317223] will be managed by Spring
2011-10-12 17:28:36,921 [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1cecdd7]
2011-10-12 17:28:36,929 [java.sql.PreparedStatement]-[DEBUG] ==>  Executing: insert into users( id,nick, psw, is_sync, is_validate_psw, init_date,version_id) values( ?, ?, ?, ?, ?, ?, ?)
2011-10-12 17:28:36,929 [java.sql.PreparedStatement]-[DEBUG] ==> Parameters: 180012197(Long), test(String), null, false(Boolean), false(Boolean), 2011-10-12(Date), 0(Integer)
2011-10-12 17:28:36,930 [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1cecdd7]
2011-10-12 17:28:36,930 [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1cecdd7] from current transaction
2011-10-12 17:28:37,034 [java.sql.PreparedStatement]-[DEBUG] ==>  Executing: insert into item (id, outer_id, title, props, cost, comments, owner ) values (?, ?, ?, ?, ?,?, ?, ?)
2011-10-12 17:28:37,035 [java.sql.PreparedStatement]-[DEBUG] ==> Parameters: 50329(Long), 一二三四五六七八九是一二三四五六七八九时一(String), 23(String), 20000:29527;20518:28416;20518:28417;20664:28105;20666:29937;20677:29952;35281:136847;1625899:3216971;1627207:28332;1627207:3232481;2915146:53908;2917721:3269957;2918248:3267690;(String), 12.5(Double), null, 180012197(Long)
2011-10-12 17:28:37,035 [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1cecdd7]
2011-10-12 17:28:37,036 [org.springframework.jdbc.datasource.DataSourceTransactionManager]-[DEBUG] Initiating transaction rollback
2011-10-12 17:28:37,036 [org.springframework.jdbc.datasource.DataSourceTransactionManager]-[DEBUG] Rolling back JDBC transaction on Connection [com.mysql.jdbc.JDBC4Connection@1317223]
2011-10-12 17:28:37,065 [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1cecdd7]
2011-10-12 17:28:37,065 [org.springframework.jdbc.datasource.DataSourceTransactionManager]-[DEBUG] Releasing JDBC Connection [com.mysql.jdbc.JDBC4Connection@1317223] after transaction
2011-10-12 17:28:37,065 [org.springframework.jdbc.datasource.DataSourceUtils]-[DEBUG] Returning JDBC Connection to DataSource
2011-10-12 17:28:37,065 [org.springframework.web.servlet.DispatcherServlet]-[DEBUG] Null ModelAndView returned to DispatcherServlet with name 'dispatcher': assuming HandlerAdapter completed request handling
2011-10-12 17:28:37,065 [org.springframework.web.servlet.DispatcherServlet]-[DEBUG] Successfully completed request
2011-10-12 17:28:37,066 [org.springframework.web.servlet.DispatcherServlet]-[DEBUG] Successfully completed request
分享到:
评论

相关推荐

    MyBatis 3 整合Spring3、SpringMVC

    【整合MyBatis 3与Spring 3、SpringMVC】 在企业级应用开发中,MyBatis作为一款轻量级的持久层框架,与Spring的集成是常见的做法,可以实现灵活的数据访问和事务管理。SpringMVC则用于处理前端请求,构建MVC架构。...

    mybatis3+spring4完美整合jar包

    本压缩包"mybatis3+spring4完美整合jar包"提供了最新的整合版本,帮助开发者快速构建基于MyBatis3和Spring4的应用。 MyBatis3是一个轻量级的持久层框架,它简化了SQL操作,允许开发者直接编写SQL语句,避免了ORM...

    spring_mybatis 整合jar包

    标题"spring_mybatis 整合jar包"指出我们要关注的是一个包含了整合Spring和MyBatis所需库的压缩文件。这通常包括Spring的核心库、Spring的数据库支持库、MyBatis的主库以及可能的其他依赖,如日志、数据库驱动等。这...

    mybatis与spring整合的全部jar包

    7. **Spring事务管理**: Spring通过`PlatformTransactionManager`接口提供事务管理服务,它可以控制MyBatis的事务边界,确保数据库操作的一致性。 8. **SpringAOP与MyBatis拦截器**: SpringAOP可以与MyBatis的...

    MyBatis 3 整合Spring3 SpringMVC

    在本文中,我们将探讨如何将MyBatis 3与Spring 3和Spring MVC进行整合,以便在一个Java EE项目中实现高效的数据访问和控制层管理。首先,我们需要确保有一个合适的开发环境,例如在Windows系统上使用支持Java EE 5的...

    mybatis3.25整合spring3.25注解事务

    mybatis3.25整合spring3.25采用注解的方式加载bean,带增删改查例子,文件上传例子,翻页例子,翻页样式20多种,更改样式只需要替换翻页div的css样式名,applicationxml注释了详细的说明,mybatis持久层有ObeectBean方式和...

    mybatis与spring整合全部jar包

    4. **配置MyBatis**:在MyBatis的配置文件`mybatis-config.xml`中,设置数据源、事务管理器、SqlSessionFactory等。同时,为每个Mapper接口创建对应的XML映射文件,定义SQL语句。 5. **编写业务逻辑**:在Service层...

    mybatis3+spring+springMVC4整合jar包.rar

    标题 "mybatis3+spring+springMVC4整合jar包.rar" 描述的是一个整合了MyBatis 3、Spring 4 和 Spring MVC 4 的项目压缩包。这个压缩包通常用于快速搭建一个基于Java的Web开发环境,尤其是用于处理数据库操作和前端...

    MyBatis3整合Spring3、SpringMVC3

    总结,MyBatis3整合Spring3和SpringMVC3可以构建出松散耦合、易于测试和维护的Java Web应用。这种整合方式在企业级应用开发中广泛应用,是Java程序员必备的知识点。通过熟练掌握这些内容,开发者可以更高效地构建高...

    Struts2+mybatis3+spring3整合

    Struts2、MyBatis3和Spring3是Java Web开发中的三大...以上就是Struts2、MyBatis3和Spring3整合的基础知识和在一个Student管理小案例中的具体应用。通过这样的整合,开发者可以构建出功能强大、结构清晰的Web应用程序。

    springmvc3+spring+mybatis3整合项目 注解实现

    总的来说,这个整合项目是一个典型的Java Web应用开发示例,涵盖了前端控制器、服务层、持久层的集成以及事务管理等多个方面,对于学习和理解Spring MVC、Spring和MyBatis的协作机制具有很高的参考价值。通过注解的...

    Spring3+springmvc+mybatis三大整合

    在"Spring3+SpringMVC+MyBatis"的整合过程中,通常会使用Spring的ApplicationContext来加载配置,管理所有组件。SpringMVC的配置需要定义DispatcherServlet,配置视图解析器如InternalResourceViewResolver,以及...

    mybatis整合spring 实例

    这个实例中的"mybatis整合spring实例(完整版)"文件可能包含了上述所有步骤的源代码,包括Spring的配置文件、MyBatis的配置文件、Mapper接口、XML文件以及相关的Java类。通过仔细阅读和理解这些代码,开发者可以...

    SpringMybatisSpringMvc整合包

    Spring框架是Java企业级应用的基石,它提供了丰富的功能,包括依赖注入(DI)、面向切面编程(AOP)、事务管理以及容器管理等。在Spring框架中,DI是核心特性,允许开发者将对象的创建和维护交给Spring容器,降低了...

    mybatis-spring 整合包

    2. **事务管理**:MyBatis-Spring支持Spring的声明式事务管理,可以将MyBatis的操作纳入Spring的事务管理范围,确保数据的一致性。 3. **简化SqlSession管理**:通过使用SqlSessionTemplate和SqlSessionDaoSupport...

    MyBatis 3 整合Spring3、SpringMVC.docx

    本文将介绍如何整合MyBatis 3、Spring 3以及Spring MVC来构建一个高效的JavaEE Web应用程序。这个过程涉及到多个组件的配置和集成,以实现数据访问层(DAO)、业务逻辑层(Service)和表现层(Controller)的松耦合...

    spring3.2.6struts2.3.15MyBatis3整合DEMO

    《Spring 3.2.6、Struts 2.3.15与MyBatis 3整合实战详解》 在Java Web开发领域,Spring、Struts和MyBatis是三大主流框架,它们各自承担着不同的职责,共同构建了一个强大的企业级应用开发环境。本DEMO以Spring ...

    mybatis3_spring3整合

    此外,事务管理是Spring和MyBatis整合中的关键部分。通过Spring的PlatformTransactionManager和@Transactional注解,我们可以方便地控制事务的开始、提交、回滚等操作,实现数据库操作的原子性和一致性。 总结来说...

    spring3和mybatis3的初始探索

    - Spring提供了优秀的事务管理能力,可以控制MyBatis的事务。通常,我们将事务管理配置为`PROPAGATION_REQUIRED`,这样所有数据库操作都在一个事务中进行。 4. **DAO层的实现**: - 通过`@Autowired`注解,Spring...

Global site tag (gtag.js) - Google Analytics