• 事务-P26,P27


    事务:要么都成功,要么都失败。例子:支付宝交易。

    acid原则。

    11直接移植10的代码

    spring-11-transaction:

    UserMapper(增加两个接口)

    1. package com.Li.mapper;
    2. import com.Li.pojo.User;
    3. import java.util.List;
    4. public interface UserMapper {
    5. public List selectUser();
    6. //添加一个用户
    7. public int addUser(User user);
    8. //删除一个用户
    9. public int deleteUser(int id);
    10. }

    UserMapper.xml:(配置两个接口sql)

    1. "1.0" encoding="UTF-8" ?>
    2. mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.Li.mapper.UserMapper">
    6. <select id="selectUser" resultType="user">
    7. select * from mybatis.user
    8. select>
    9. <insert id="addUser" parameterType="user">
    10. insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd})
    11. insert>
    12. <delete id="deleteUser" parameterType="int">
    13. deletes from mybatis.user where id = #{id}
    14. delete>
    15. mapper>

    把UserMapperImpl的接口实现类也重写一下。避免报错。

    UserMapperImpl2:(生成一个User,用来插入)

    1. package com.Li.mapper;
    2. import com.Li.pojo.User;
    3. import org.apache.ibatis.session.SqlSession;
    4. import org.mybatis.spring.support.SqlSessionDaoSupport;
    5. import java.util.List;
    6. //继承SqlSessionDaoSupport,不需要创建sqlSession了,可以直接用
    7. public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper{
    8. @Override
    9. public List selectUser() {
    10. User user = new User(5, "王桑", "1232132");
    11. SqlSession sqlSession = getSqlSession();
    12. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    13. mapper.addUser(user);
    14. mapper.deleteUser(5);
    15. return mapper.selectUser();
    16. }
    17. @Override
    18. public int addUser(User user) {
    19. return getSqlSession().getMapper(UserMapper.class).addUser(user);
    20. }
    21. @Override
    22. public int deleteUser(int id) {
    23. return getSqlSession().getMapper(UserMapper.class).deleteUser(id);
    24. }
    25. }

    在spring-dao.xml原有的基础上,增加下面的内容。(配置事务)

    1. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    2. <property name="dataSource" ref="dataSource"/>
    3. bean>
    4. <tx:advice id="txAdvice" transaction-manager="transactionManager">
    5. <tx:attributes>
    6. <tx:method name="add" propagation="REQUIRED"/>
    7. <tx:method name="delete" propagation="REQUIRED"/>
    8. <tx:method name="update" propagation="REQUIRED"/>
    9. <tx:method name="query" read-only="true"/>
    10. <tx:method name="*" propagation="REQUIRED"/>
    11. tx:attributes>
    12. tx:advice>
    13. <aop:config>
    14. <aop:pointcut id="txPointCut" expression="execution(* com.Li.mapper.*.*(..))"/>
    15. <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
    16. aop:config>

    直接测试:

    报错,同时也没有插入成功。

     

  • 相关阅读:
    KNN(下):数据分析 | 数据挖掘 | 十大算法之一
    算法训练营day49|动态规划 part10:(LeetCode 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II)
    【HTTP协议】HTTP协议初体验,深入浅出网络协议
    第一节 Maven核心程序解压与配置
    计算机专业毕业设计项目推荐13-超酷炫轻食平台(Go/Java+Vue+Mysql)
    自动泊车系统设计学习笔记
    12. 测试搭建百万并发项目
    【数据结构算法(一)】递归篇(常见实例讲解)
    【软件分析/静态分析】学习笔记01——Introduction
    SpringCloud Gateway 漏洞分析 (CVE-2022-22947)
  • 原文地址:https://blog.csdn.net/m0_54842832/article/details/128124133