在Spring Boot中,当我们使用了spring-boot-starter-jdbc或spring-boot-starter-data-jpa依赖的时候,框 架会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager。所以我们不需要任何额外 配置就可以用@Transactional注解进行事务的使用, 部分说需要首先使用注解 @EnableTransactionManagement 开启事务支持后才能正常使用,但是我使用的过程中好像不需要设置这个
如下, 如果不添加@Transactional, 可以添加第一条, 第二条出错,第三条也添加不进去。
如果添加了@Transactional, 那么因为第二条出错,数据库一条数据也不会添加
package im.bool.friendyou;
import im.bool.friendyou.dao.TestMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
/**
* #author : ivanl001
* #creator : 2018-07-27 11:24
* #description : 事务测试
**/
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootTransactionTest {
@Autowired
private TestMapper testMapper;
@Test
@Transactional
public void transactionTest01() {
testMapper.insert(new im.bool.friendyou.model.dbModel.Test(6, new Byte("12")));
testMapper.insert(new im.bool.friendyou.model.dbModel.Test(7, new Byte("69999")));
testMapper.insert(new im.bool.friendyou.model.dbModel.Test(8, new Byte("12")));
}
}
网友评论