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

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

  • 相关阅读:
    Mono项目将继续推动基于Linux的开发
    VS.PHP 在Visual Studio 下的 PHP 开发 IDE 工具
    SQL Server 2008 的代码提示功能
    想做的时候没有机会了
    我的最爱
    双缓冲
    做个好男人!
    再见了,曾经喜欢过的歌手
    看看他是喜欢你还是爱你的~~~
    独家:未来五年程序员应当具备的十项技能
  • 原文地址:https://www.cnblogs.com/shyroke/p/8025018.html
Copyright © 2011-2022 走看看