(十四)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>{

}

 

  •   结果:

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM