zoukankan      html  css  js  c++  java
  • (十四)SpringBoot之事务处理

    一、简介

    ssh ssm都有事务管理service层通过applicationContext.xml配置,所有service方法都加上事务操作;

    用来保证一致性,即service方法里的多个dao操作,要么同时成功,要么同时失败;

    springboot下的话,在service方法上加上@Transactional即可

    二、案例

       2.1  controller

    package com.shyroke.controller;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.domain.PageRequest;
    import org.springframework.data.domain.Pageable;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.shyroke.dao.UserMapper;
    import com.shyroke.entity.UserBean;
    import com.shyroke.service.UserService;
    
    @Controller
    @RequestMapping(value = "/")
    public class IndexController {
    
        @Autowired
        private UserService userService;
        
        @ResponseBody
        @RequestMapping(value="/save")
        public String list() {
        
            UserBean user1=new UserBean();
            user1.setUserName("user1");
            user1.setPassWord("123");
        
            userService.save(user1);
            
            return "index";
            
            
        }
    }
    • service

    package com.shyroke.service;
    
    import com.shyroke.entity.UserBean;
    
    public interface UserService {
    
        void save(UserBean user1);
    
    }
    • service实现类

      在下面的代码中,我们对save方法加上了@Transactional注解,表示使用事务,当有异常抛出时,就会自动回滚。

    package com.shyroke.service.impl;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.shyroke.dao.UserMapper;
    import com.shyroke.entity.UserBean;
    import com.shyroke.service.UserService;
    
    @Service
    public class UserServiceImpl implements UserService{
    
        @Autowired
        private UserMapper userMapper;
        
        @Override
        @Transactional
        public void save(UserBean user1) {
        
            userMapper.save(user1);
            
            boolean flag = true;
            if (flag) {
            throw new RuntimeException();
            }
            
        }
    
    }
    • mapper

    package com.shyroke.dao;
    
    import org.springframework.data.jpa.repository.JpaRepository;
    
    import com.shyroke.entity.UserBean;
    
    public interface UserMapper extends JpaRepository<UserBean, Integer>{
    
    }
    •   结果:

    数据库没有数据,说明已经被回滚了。

  • 相关阅读:
    面向对象的本质是算法的上下文封装,是同一类属的行为接口的一致性
    结构化方法和面向对象方法的比较
    需求文档和软件都是服务的集合
    注意 Laravel 清除缓存 php artisan cache:clear 的一个坑
    面向对象复习笔记(一)
    详解如何在Laravel中增加自定义全局函数
    Laravel 引入自定义类库或第三方类库
    PHP怎么调用其他类的方法
    Laravel如何引用第三方(自定义)库
    laravel框架手机发送验证码
  • 原文地址:https://www.cnblogs.com/shyroke/p/8025018.html
Copyright © 2011-2022 走看看