zoukankan      html  css  js  c++  java
  • SpringBoot事务管理

    1、在UserMapper接口中添加更新和删除方法

    package com.cppdy.mapper;
    
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Update;
    
    import com.cppdy.entity.User;
    
    @Mapper
    public interface UserMapper {
    
        @Select("select * from user where id=#{id}")
        User getUserById(@Param("id") int id);
    
        @Insert("insert into user values(NULL,#{name})")
        User insertUser(@Param("name") String name);
        
        @Update("update user set username=#{name} where id=#{id}")
        User update(@Param("id") int id,@Param("name") String name);
        
        @Delete("delete from user where id=#{id}")
        User delete(@Param("id") int id);
    }

    2、创建UserService接口

    package com.cppdy.service;
    
    public interface UserService {
        
        //执行事务
        public void tranfor();
    
    }

    3、创建UserServiceImpl实现类(@Transactional开启事务管理)

    package com.cppdy.service.impl;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.cppdy.mapper.UserMapper;
    import com.cppdy.service.UserService;
    
    @Service
    public class UserServiceImpl implements UserService {
    
        @Autowired
        private UserMapper userMapper;
    
        // 开启事务管理
        @Transactional
        public void tranfor() {
            // 更新一条数据
            userMapper.update(2, "cppdy123");
            // 抛出一个异常
            int a = 2 / 0;
            // 删除一条数据
            userMapper.delete(2);
        }
    
    }

    4、在HelloWordController类中创建测试方法

    @RequestMapping("tranfor")
        public void tranfor() {
    
            userService.tranfor();
        }
  • 相关阅读:
    .NET面试题解析(07)-多线程编程与线程同步
    .NET面试题解析(06)-GC与内存管理
    .NET面试题解析(05)-常量、字段、属性、特性与委托
    .NET面试题解析(04)-类型、方法与继承
    .NET面试题解析(03)-string与字符串操作
    .NET面试题解析(02)-拆箱与装箱
    .NET面试题解析(01)-值类型与引用类型
    StackExchange.Redis使用配置
    X--名称空间详解
    深入浅出话资源
  • 原文地址:https://www.cnblogs.com/jiefu/p/10048016.html
Copyright © 2011-2022 走看看