Mybatis框架思考与总结
为什么很多公司都不用Mybatis自带二级缓存
- 集群环境下,mybatis不支持分布式缓存;(虽然可额外配置实现)
- 二级缓存域是mapper级别,使用不当,容易产生脏数据
- 因为mybatis一般自动生成crud,需要额外自定义扩展的mapper,还有表连接,其他领域的mapper若连接缓存表也需要处理,麻烦。
如何关闭一级缓存
- (1)在mapper查询标签配置flushCache=true
- (2)设置localCacheScope为Statement
- (3)查询时,传入随机参数
解析全局配置文件创建了什么对象
- Configuration 全局单例配置类
- MapperStatement mapper文件配置信息
四大对象什么时候创建的
- Executor 在创建SqlSession会话时创建
- StatementHandler,ParameterHandler,ResultSetHandler 都是在执行Mapper方法时创建(每次执行都会创建)
同类工具
- DbUtils
- spring jdbc
- hibernate
选型参考,如何在Mybatis和其他框架进行选择
- 需灵活sql,mybatis
- 性能要求高,jdbc