运行junit4测试时,我发现mybatis的方法已成功更新,但是数据库没有更新的记录,但是执行方法下面有一个while循环执行逻辑,这是因为该方法还没有执行吗?但是当我删除了while循环并在mysql中进行了更新。
public void executeMethod(Long id) {
UserMapper.updateById(id);
while(conditions) {
// some business
}
}
答案 0 :(得分:0)
一个可能的原因是,在检查数据库时未提交事务。
例如,如果executeMethod
用@Transactional
注释,则事务在输入方法之前被注视,并且在executeMethod
完成之后被提交。因此,如果您要在控制流离开executeMethod
之前检查数据库,则更改尚未提交,因此当您从另一个事务查询数据库时,这些更改是不可见的。