在spring boot 整合mybatis的demo 测试代码中,
@RunWith(SpringRunner.class)
@SpringBootTest
public class Chapter327ApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void contextLoads() throws Exception{
userMapper.insert("AAA", 20);
User user = userMapper.findByName("AAA");
System.out.println(user.getAge());
}
}
由于返回的应该是一个对象而不是list,但是在每次运行时候都会像数据库中插入一个重复的数据,导致查询返回的结果不只有一条,所以抛出异常。
解决办法,在测试代码中加入数据回滚功能:用到两个注解:
@Transactional @Rollback
代码如下:
@RunWith(SpringRunner.class)
@SpringBootTest
***@Transactional***
public class Chapter327ApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
***@Rollback***
public void contextLoads() throws Exception{
userMapper.insert("AAA", 20);
User user = userMapper.findByName("AAA");
Assert.assertEquals("20", user.getAge());
System.out.println(user.getAge());
}
}