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

}
复制代码

 

  •   结果:

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

扫描二维码关注公众号,回复: 888498 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_35193093/article/details/79423911