Mybatis一级缓存:
默认是开启一级缓存的,目的是降低数据库的压力。
一级缓存的命中原则:
1、statementId,技术脚本和条件参数一致,statementId不一样同样不会命中。
2、要求传递给sql的最终参数相同。
3、分页参数的条件如果不同依然不能命中。
4、sql语句相同。
5、执行环境必须象同(缓存只存在一次sqlsession内)。
Mybatis的一级缓存的生命周期:
与xml的标签无关而与sqlSession调用的方法有关,执行session.commit方法缓存会被清空,rollback方法缓存也会被清空,update更新缓存也会被清空(与表无关),clearCache也会清空缓存。
获取session->执行查询->关闭session
Mybatis的脏读(读未提交)/不可重复读(读提交)问题的理解
Mybatis的的一级缓存的生命周期是在一次数据库事务的生命周期内,因此Mybatis的脏读是不存在的,Bybatis的事务隔离级别反而提升了事务隔离级别。