Mybatis-Plus作为一款开源免费的Mybatis增强工具,在Mybatis基础上做了很多的提升,简化的开发操作,提升了开发效率。
但是笔者认为,方便是很方便,但是侵入了Service层不好维护,最终导致代码可读性太差,耦合性太高,不利于封装,有些时候还不如SQL来的优雅。
优点
操作相对简单
使用过Mybatis-Plus都知道,它提供了可以从代码中操作增删改查的方式,编码相对简单。相比较于Mybatis通过Mapper文件去映射一个XML的文件然后编写SQL语句的操作来讲实现相对简单。但是比较麻烦的就是会出现大量的代码,并且个人感觉这些代码会影响可读性。
内置主键生成
Mybatis-Plus中提供了四种的主键生成策略。并且也做了相应的优化,使用起来相对方便。不需要开发者进行多余的处理。但是在分布式系统中的使用就会出现短板。
代码生成器
提供的代码生成器确实节省了很多不必要的代码编写时间。
缺点
个人感觉除了操作简单之外,整个的Mybatis-Plus都是使用缺点。除了上面提到的可维护性和代码可读性较差等问题之外。在使用的过程中还会出现如下的一些问题。
查询问题
在Mybatis-Plus中提供了查询操作的简单方法,但是这个select的操作有点类似于select * from table 的操作。也就是说如果需要去指定一些字段的时候,虽然支持这样的指定,但整体的使用效果并不是太好。
有时候,前端需要返回一些Vo对象,这个对象需要经过封装。而Mybatis-Plus并没有提供对应的封装需要返回Vo对象的时候就需要遍历已有的结果,或者是通过属性拷贝的方式进行,如果属性名称或者是查询的结果较多的时候,就有可能会影响到性能。
复杂语句
在很多的业务操作中,需要多个表联查,虽然在Mybatis-Plus中提供了这方面的支持,但是对于一些更为复杂的查询还是需要通过编写SQL语句的方式来实现,就会造成在ORM中的混乱,一部分是使用了Mybatis-Plus的支持,一部分使用XML映射。
并且在处理稍微复杂的操作的时候,还会出现语句报错,语句不匹配的情况,然后就需要耗费大量的时间去解决这些问题。可谓是吃力不讨好。
对于分页操作
在Mybatis-Plus中提供了分页的相关操作,并且其分页的灵活性较差,再加上在有些情况下需要进行条件查询之后分页,最终导致前端得到的数据会是一个很复杂的数据结构。当然分页操作并不是全是问题,如果是能够接受还是可以使用的。
总结
相比较与Mybatis的原生方式,后来的很多扩展框架都是为了提升操作的便捷性,但是对于复杂业务来讲,笔者建议还是使用最为基础的方式来开发。虽然这些框架屏蔽了很多的复杂的SQL的编写,但是这种框架使用太多的话并不会对自己的开发能力有所提升。所以笔者不推荐初学者使用。