my best practice for MyBatis.
个人针对 MyBatis 的最佳实践。
我经历过很多公司与项目,现在很多公司在选择架构时都喜欢MyBatis,因为相对于Hibernate来说, MyBatis比较轻量级。而且无论是QBC的Criteria,或者是HQL,相对于原生sql都需要一定的学习成本。 因此大部分公司可能都倾向于Hibernate和Mybatis混用。Hibernate用于增删改和简单查询,Mybatis用于 多表关联的复杂查询。
我在一家公司担任架构师时,ORM框架选择了Mybatis,但是针对它进行了一定程度的封装。此处放出的版本是单独 针对本项目提取的部分,不含业务逻辑(除了少量演示逻辑),主要是展示了我自己理解的最佳实践的原则,如下几点:
- 精简代码
- 不存在的代码才是好代码,自动生成的是烂代码(MyBatis Generator)
- 封装底层代码,从而消除DAO层
- 尽量封装面向对象的操作
- 封装面向对象的级别操作,使得一般的增删改无需编写sql语句
- 数据操作机制化
- 新增/修改日期,创建/修改人员等统一底层写入
- 数据过滤策略注入,减少针对不同角色的写的分支代码。以及研发人员疏漏造成数据权限控制疏漏。
PS:针对上面的数据操作机制化的特性,还会涉及到RBAC权限模型的一些设计。
本项目只能当作一种最佳实践方法,并非单纯组件。可以考虑参考并抽取形成自己的封装。 主要涉及的开源组件:spring boot、pagehelper、log4j2。