如何评价mybatis-plus?
发布网友
发布时间:2024-10-23 23:40
我来回答
共1个回答
热心网友
时间:2024-10-27 12:15
个人对于 MyBatis-Plus 的看法并不甚满意。从设计角度出发,我认为其中存在一些问题,以下列举了其中的两个典型例子供参考:
1. **代码生成器的设计与应用**
- 在解决重复性工作方面,代码生成器确实能有效减少大量重复劳动,例如为100个表生成Java Entity文件。这一设计初衷相当合理,有助于提升开发效率。
-
然而,MyBatis-Plus在生成代码时,不仅限于生成Entity,还涵盖了Controller、Service等组件。这种设计在解决重复性问题的同时,也产生了重复代码,反而降低了代码的可复用性和维护性。
-
生成Entity的代码无法进一步抽象,因为每个Entity、字段和类型都有所不同。但Controller和Service却可以提取抽象。如果需求仅限于CRUD操作,使用如Spring Data REST一类的方案更为合理,通过一个控制器和通配符注解即可实现,而不是复制100个相同的Controller。
2. **IService接口与ActiveRecord模式的Model接口**
-
在分层设计中,代码划分到Controller、Service和DAO层是普遍做法。然而,在实践中,如何正确划分这些层并不总是容易达成共识。
-
IService接口和ActiveRecord模式的Model接口提供了便利性,但同时也可能导致边界不清,进而影响到代码的可读性和可维护性。这种设计可能助长了开发人员对“一刀切”解决方案的依赖,而非考虑更为抽象和通用的解决策略。
-
考虑替换法来判断代码归属更为合理,即在不确定代码应归属Service还是DAO层时,思考框架替换的可行性。通常,SQL语句较为明确,适合归类于DAO层。但在Service层则会出现逻辑混乱,这表明服务层受到了不当影响,其设计初衷与最佳实践相悖。
总结而言,MyBatis-Plus旨在提供便利,但在某些设计和功能上却可能促进了不健康或低效的编程实践。作为一个流行的工具库,MyBatis-Plus应更积极地引导开发者走向更为合理和高效的编程方式,而非仅仅提供便利。当前国内大量使用面向数据库编程的开发人员,MyBatis-Plus在这种背景下提供了便利性,但同时也需要反思和改进,以更好地促进高质量的软件开发实践。有兴趣深入了解的读者可以参阅我的其他文章进行探讨。