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>{
    
    }
    •   结果:

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

  • 相关阅读:
    基于jquery的web在线流程图设计器gooFlow
    angularJS学习笔记二
    angularJS学习笔记一
    JavaScript作用域链详解
    图片查看器(可拖拽,缩放,轮播)
    小议window.event || ev
    Vue安装准备工作
    让VS2013添加新类时自动添加public关键字
    win10太垃圾,真的不好用。
    Bind 和 ScaffoldColumn[转]
  • 原文地址:https://www.cnblogs.com/shyroke/p/8025018.html
Copyright © 2011-2022 走看看