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
本文深入探讨Mybatis框架的使用及局限性,分析为何企业常避开其自带的二级缓存,涉及集群环境下分布式缓存的支持问题,脏数据风险,以及自定义mapper的复杂性。同时,介绍了关闭一级缓存的方法,解析全局配置文件生成的关键对象,以及在Mybatis与其他框架如DbUtils、SpringJdbc、Hibernate之间的选型策略。

被折叠的 条评论
为什么被折叠?



