在学习 spring 事务。看完文档写了个 demo,发现事务没起作用。 具体问题是这样: 1 、 @Transactional ServiceA method 1 插入数据,@Transactional ServiceB method 2 中只抛出空指针异 常,结果发现数据库中 method1 插入数据提交了。 2 、method 1 中加入抛出空指针代码,并单独在 controller 中调用,则在数据库中未发现新数据插入。 框架使用的 spring boot+mybatis 。 代码 Controller:
@RequestMapping("/transaction")
public String transactionTest() {
Book book=new Book();
book.setName("发");
book.setAuthor("fage");
book.setPrice(102);
bookService.saveOrUpdate(book);
serviceForTest.transactionTest();
return "home";
}
ServiceA:
@Transactional(propagation=Propagation.REQUIRED)
public int saveOrUpdate(Book b) {
int i;
// TODO Auto-generated method stub
if(b.getId()==null) {
i=bookMapper.insertBook(b);
// String a = null; // a.indexOf('c'); return i;
}
return bookMapper.updateById(b);
}
ServiceB:
@Transactional(propagation=Propagation.REQUIRED)
public void transactionTest() {
// TODO Auto-generated method stub
String a = null;
a.indexOf('c');
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.