事務是很多項目中需要注意的東西,有些場景如果沒有加事務控制就會導致一些臟數據進入數據庫,本文簡單介紹SpringBoot怎樣使用事務减牺。
本文使用的是之前整合JPA的文章是嗜,具體可以參考 傳送門。
無論是配置還是pom文件等等齿梁,沒有任何改變催植,改變的是測試的controller上面的兩個方法,其中一個方法使用了@Transactional注解來進行事務控制勺择。
controller代碼如下:
@RestController
public class HouseController {
@Autowired
private HouseRepository houseRepository;
@GetMapping("/test1")
public String test1(){
houseRepository.save(new House("house1", "100平方米"));
houseRepository.save(new House("house2", "100平方米"));
houseRepository.save(new House("house3", "100平方米"));
houseRepository.save(new House("house444444444", "100平方米"));
houseRepository.save(new House("house5", "100平方米"));
return "success";
}
@GetMapping("/test2")
@Transactional
public String test2(){
houseRepository.save(new House("house6", "100平方米"));
houseRepository.save(new House("house7", "100平方米"));
houseRepository.save(new House("house8", "100平方米"));
houseRepository.save(new House("house999999999", "100平方米"));
houseRepository.save(new House("house10", "100平方米"));
return "success";
}
}
test1方法沒有加入事務创南,test2方法加入了事務注解。
啟動項目省核,瀏覽器訪問http://localhost:8888/test1稿辙,瀏覽器如圖所示,報錯了气忠,因為第四條數據超長了邻储。
image
查看數據庫,可以看到如圖:
image
從上圖可以看出旧噪,前三條插入成功了吨娜,但是后兩條都失敗了,這并不是我們想要的結果淘钟。通常來講宦赠,我們需要的只是成功的話都插入,失敗的話都回滾米母,這時我們調用http://localhost:8888/test2勾扭,在次查看數據庫,還是之前的三條數據铁瞒,SpringBoot使用事務建當整合到這里就完成了妙色。
源碼下載 :大老楊碼云