Mybatis工作原理
简单一句话总结:
SqlSession根据statementID,在Mybatis的配置对象Configuration中获取到对应的
MapperStatement对象,然后调用Mybatis执行器来执行具体的操作
流程图如下:
测试:
Mybatis一级缓存
一级缓存命中原则
- stattis工作原理
简单一句话总结:yamlSqlSession根据statementID,在Mybatis的配置对象Configuration中获取到对应的MapperStatement对象,然后调用Mybatis执行器来执行具体的操作
流程图如下:测试:

Mybatis一级缓存
一级缓存命中原则
即:Mybatis是如何判断某两次查询是完全相同的查询?
- statementId需相同
- 传给sql语句的参数(包含分页参数)需相同
- sql语句需相同
- 环境需相同
一级缓存生命周期
由于关闭Session、执行Commit、执行Rollback都会清空Mybatis一级缓存,所以实际上:
Mybatis一级缓存的生命周期是在数据库事务的生命周期之内的
- 缓存的产生:
- 缓存的销毁:
1、sqlSession的关闭
2、sqlSession的commit
3、sqlSession的rollback
4、执行insert、update、delete操作,会清空所有的缓存(与表无关)
5、sqlSession的clearCache()
Mybatis如何解决数据库事务问题
参考:1、Mybatis的工作原理,你了解过吗?
2、mybatis工作原理