问题描述
springboot+mybatis可读已提交不生效,先在springboot查询出结果然后在数据库修改值后在Java再次读取,结果读取的还是修改之前的值
原因:
是mybatis二级缓存导致的
解决办法
方案一
@Resource
private SqlSession sqlSession;
@Transactional(isolation = Isolation.READ_COMMITTED)
@Override
public void aaa() {
SysLog log1 = this.getById("");
log.info("log1【{}】", log1.getLogContent());
sqlSession.clearCache();
SysLog log2 = this.getById("");
log.info("log2【{}】", log2.getLogContent());
}
方案二
@Resource
private SqlSessionTemplate sqlSessionTemplate;
@Transactional(isolation = Isolation.READ_COMMITTED)
@Override
public void aaa() {
SysLog log1 = this.getById("");
log.info("log1【{}】", log1.getLogContent());
sqlSessionTemplate.clearCache();
SysLog log2 = this.getById("");
log.info("log2【{}】", log2.getLogContent());
}
方案三
<select id="getById" resultType="SysLog" useCache="false">
SELECT * FROM sys_log WHERE id = #{id}
</select>