首页 > 其他分享 >14.spring声明事务

14.spring声明事务

时间:2023-01-19 00:12:13浏览次数:52  
标签:mapper 事务 14 addUser spring UserMapper public User class

1.要开启 Spring 的事务处理功能,在 Spring 的配置文件中创建一个 DataSourceTransactionManager 对象:

<!--配置声明式事务-->
<bean id="transationManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<!--结合AOP实现事务的织入-->
<!--配置事务通知-->
<tx:advice id="txAdvice" transaction-manager="transationManager">
    <tx:attributes>
        <!--给那些方法配置事务-->
        <!--propagation 配置事务的传播性-->
        <tx:method name="addUser" propagation="REQUIRED"/>
        <tx:method name="delUser" propagation="REQUIRED"/>
        <tx:method name="*" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>

<!--配置事务的切入-->
<aop:config>
    <aop:pointcut id="pointCut" expression="execution(* com.zuo.dao.UserMapperImpl.*.*(..))"/>

    <aop:advisor advice-ref="txAdvice" pointcut-ref="pointCut"/>
</aop:config>

 

事务的管理有两种

  第一种:交由容器管理事务

  (1)配置事务

public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper {

    @Override
    public List<User> UserList() {

        UserMapper mapper = getSqlSession().getMapper(UserMapper.class);

        User addUser = new User(5, "xiaoKUN", "123456");

        mapper.addUser(addUser);

        mapper.delUser(5);

        return mapper.UserList();

    }

    @Override
    public int addUser(User user) {
        return getSqlSession().getMapper(UserMapper.class).addUser(user);
    }

    @Override
    public int delUser(int id) {
        return getSqlSession().getMapper(UserMapper.class).delUser(id);
    }
}

  (2)在spring-dao.xml中配置声明式事务

<!--配置声明式事务-->
<bean id="transationManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<!--结合AOP实现事务的织入-->
<!--配置事务通知-->
<tx:advice id="txAdvice" transaction-manager="transationManager">
    <tx:attributes>
        <!--给那些方法配置事务-->
        <!--propagation 配置事务的传播性-->
        <tx:method name="addUser" propagation="REQUIRED"/>
        <tx:method name="delUser" propagation="REQUIRED"/>
        <tx:method name="*" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>

<!--配置事务的切入-->
<aop:config>
    <aop:pointcut id="pointCut" expression="execution(* com.zuo.dao.UserMapperImpl.*.*(..))"/>

    <aop:advisor advice-ref="txAdvice" pointcut-ref="pointCut"/>
</aop:config>

  (3)测试

public class MyTest {

    @Test
    public void test(){

       ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        UserMapper mapper = context.getBean("userMapper2", UserMapper.class);

        List<User> userList = mapper.UserList();

        for (User user : userList) {
            System.out.println(user);
        }

    }

}

  第二种:编程式的事务管理

    定义显式的捕获异常和业务的回滚操作

标签:mapper,事务,14,addUser,spring,UserMapper,public,User,class
From: https://www.cnblogs.com/zuok/p/17060905.html

相关文章

  • Spring JAXB
    JAXB是 用于XML绑定的Java体系结构的首字母缩写。它允许Java开发人员将Java类映射为XML表示形式。JAXB可用于将Java对象编组为XML,反之亦然。它是Sun提供的OXM(对象XML映......
  • Spring和JMS集成
    要将spring与JMS集成,您需要创建两个应用程序。JMS接收器应用程序JMSSender应用程序要使用spring创建JMS应用程序,我们使用Apache的 ActiveMQServer 创建队列。让我......
  • SpringBoot源码学习3——SpringBoot启动流程
    系列文章目录和关于我一丶前言在《SpringBoot源码学习1——SpringBoot自动装配源码解析+Spring如何处理配置类的》中我们学习了SpringBoot自动装配如何实现的,在《Sprin......
  • 解决:windows下php curl https时 SSL operation failed with code 1. OpenSSL Error me
    下载证书curl-ExtractCACertsfromMozillahttps://curl.se/docs/caextract.html 配置php.ini,把路径放上去  搞定收工......
  • Spring支持的常用数据库事务传播属性和事务隔离级别
    写在前面:三个月以前,我在B站看了敖丙的一个面试视频,对当时的我来说,真的就是一脸懵逼的进,一脸懵逼的出。三个月过去了,如今再回头看那个视频,最明显的感觉就是自己进步了,居然能......
  • 230118_50_SpringBoot入门
    yaml配置文件中,支持占位符配置person:name:bill${random.int}age:4happy:truebirth:2023/01/15maps:{k1:v1,k2:v2}hello:hellolists:-cat-dog-fish......
  • Spring远程处理(通过Hessian示例)
    借助于 HessianServiceExporter 和 HessianProxyFactoryBean 类,我们可以实现hessian提供的远程服务。Hessian的优势Hessian在整个防火墙上都能很好地工作。Hessian......
  • Spring远程处理(通过Burlap示例)
    Houssian和Burlap均由Coucho提供。借助于 BurlapServiceExporter 和 BurlapProxyFactoryBean 类,我们可以实现burlap提供的远程服务。Burlap的示例与Burlap相同,您只需......
  • Spring通过HTTP调用程序进行远程处理示例
    基于Web的客户端在上面给出的示例中,我们使用了基于控制台的客户端。我们也可以使用基于Web的客户端。您需要创建3个其他文件。在这里,我们使用以下文件:ClientInvoker.jav......
  • Spring与RMI集成
    SpringRMI使您可以通过RMI基础结构公开服务。Spring借助org.springframework.remoting.rmi。 RmiProxyFactoryBean 和org.springframework.remoting.rmi。 RmiServic......