如何评价 MyBatis-Flex 框架
最近看到了一个全新的 ORM 框架 MyBatis-Flex,我就想类 MyBatis 框架或者增强版 MyBatis 框架层出不穷,又打算在哪里创新呢?经过初步的了解之后,发现这个框架还是让人眼前一亮,有点集大成者的感觉,并且优化的方向、突破点也可圈可点,很有针对性,很好的平衡了效率提升与可控可靠。
MyBatis-Flex 是什么
先引用官方内容做个介绍:
MyBatis-Flex 是一个优雅的 MyBatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper^亮点 帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。
总而言之,MyBatis-Flex 能够极大地提高我们的开发效率和开发体验,让我们有更多的时间专注于自己的事情。
MyBatis-Flex 为什么值得考虑
框架自称的优点见官方说明,就不重复了。说说我的个人看法:
1、针对单表操作的 JPA 化
通过BaseMapper
的接口提供了 一系列的基础单表增、删、改、查操作,覆盖常见使用场景,可以大幅提升开发效率,同时有不会过分泛化使用场景。
2、提供灵活性和研发效率的同时,兼顾了 SQL 性能审计
新的 QueryWrapper 替代了 SQL 编写方式,但是具体的查询逻辑仍然是透明的,Code Review 时不影响可读性和可见性,审查人员仍然可以清楚的看到查询的条件、是否匹配索引等等。
QueryWrapper query=new QueryWrapper()
.select(
ACCOUNT.ID,
ACCOUNT.USER_NAME,
max(ACCOUNT.BIRTHDAY),
avg(ACCOUNT.SEX).as("sex_avg")
).from(ACCOUNT);
相对来讲,MyBatis-Plus 的一些封装在这方面则存在隐患,比如传入一个 Java Bean,根据 Java Bean 设置了什么属性,自动生成 Where 条件。这种做法,Java Bean 在运行时究竟有什么字段赋值,最终会不会匹配索引在代码检查阶段是无法判断或者需要很高的成本去判断,很容易遗留性能问题到生产,不是一种很好的解决方案。
3、对数据单笔操作、批量操作都提供了恰当的解决方案和清晰的说明
4、Db + Row 工具类,提供了在 Entity 实体类之外的数据库操作能力,保证了不同场景的灵活性。
综上,个人认为,这是一个值得推荐的框架,看得出来设计者的丰富经验和深厚积淀,能很好的把握痛点和产品的发力点,同时兼顾效率与管控的平衡。
版权声明: 本文为 InfoQ 作者【酱紫的小白兔】的原创文章。
原文链接:【http://xie.infoq.cn/article/3f78e721f77a3df0b4c678288】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论