1. 程式人生 > >SpringBoot入門學習(十)~~ 事務配置

SpringBoot入門學習(十)~~ 事務配置

目錄

SpringBoot事務配置

  • 一、Mybatis整合Spring的事務配置方式

回顧Mybatis配置事務有兩種方式,一種是註解方式;另一種是配置檔案的方式。註解方式首先開啟註解掃描,然後在service上使用@Transactional註解即可。如果是配置檔案方式的話,利用aop特性,在service請求,引入tansactionManager的事務管理機制。

這裡的話,我只介紹使用註解的方式。因為,xml的方式是通過

@ImportResource的註解引入xml的配置檔案,實現這種配置檔案+註解兩種方式共存情況,在SpringBoot開發中,更加傾向於使用註解的方式,而不用xml。

  • 二、入門小小案例~~儲存使用者資訊

在原來的基礎之上進一步開發

1、在UserMapper開發一個插入資料的方法

@Repository
public interface UserMapper {

   
@Select("select * from user")
    List<User> list();
   
@Insert("insert into user(email,fullname,isadmin,password) values (#{email},#{fullname},#{isadmin},#{password})"

)
   
void save(User user);

}

2、編寫IUserService介面+UserServiceImpl時限內

public interface IUserService {

   public List<User> list();

  

   public void save(User user);

}
@Service

  public class UserServiceImpl implements IUserService {

   @Autowired

   private UserMapper userMapper;

  

   @Override

   public List<User> list() {

      return userMapper.list();

   }

  

   @Override

   public void save(User user) {

      userMapper.save(user);

   }

}

3、編寫控制器類,直接呼叫儲存資料方法,返回“儲存成功”

@RequestMapping("/save")

  @ResponseBody

  public String save(){

   User user = new User();

   user.setEmail("[email protected]");

   user.setFullname("yansha");

   user.setIsadmin(true);

   user.setPassword("123456");

   userService.save(user);

   return "儲存成功";

}

4、啟動專案,訪問/user/save方法,檢視資料庫。

表示資料插入成功了。接下來模擬異常的情況出現!

5、修改儲存資料程式碼,故意除0

@Override

  public void save(User user) {

   userMapper.save(user);

   int i = 10 % 0;

}

6、啟動專案,訪問/user/save方法,效果圖如下:

檢視資料庫,是否儲存了資料:

說明在預設情況下是沒有事務的。

  • 三、註解方式配置Mybatis的事務

  1. 開啟註解掃描驅動,對應SpringBoot中的@EnableTransactionManagement
@SpringBootApplication

@MapperScan("com.example.demo.mybatis.mapper")

  @EnableTransactionManagement

  public class MybatisApplicatioin {

   public static void main(String[] args) {

      SpringApplication.run(MybatisApplicatioin.class,args);

   }

}

2、在service類上加上,事務註解

@Transactional即可
@Service

@Transactional

  public class UserServiceImpl implements IUserService {

   @Autowired

   private UserMapper userMapper;
   …………………………………….
}

重複上面的實驗,嘗試在異常的情況下去儲存

發現在異常的情況下已經不插入資料了。

【總結:】

       其實呢!在SpringBoot預設已經啟動了註解驅動掃描。也就是我們不用再Application中配置

@EnableTransactionManagement

直接在需要啟動事務的類檔案上打上@Transactional註解即可