为什么mybatiseplus这么好用,反而用的不多?

Mybatis-plus套用官方的解释便是成为MyBatis最好的搭档,效率翻倍。它是在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。

如果有实际的开发经验,你会发现Mybatis-plus主要应用的场景是对单表的处理。而且,开发起来,确实即方便又迅速,同时另一方面,QueryWrapper里面虽然看起来简单,不过对一般写程序的人来说记住可能需要点时间和精力,再就是省略了dao层,会让你人不那么习惯。

如果是基于一般的功能开发,我相信很多人都会感觉,这工具真不错。

但问题来了,

比如项目报错了,很难定位到具体的sql,没有直接写sql来的直接。代码可读性差,不利于sql优化,虽然Mybatis-plus可以让你的代码更加的简洁,并具有上面说的诸多优点,但同时降低代码复用性和层次结构的清晰度,大幅增加代码修改维护成本。service层代码和数据库访问层代码混淆在一起,让开发人员很难专注的关心某一细节。常见的SQL操作Mybatis-plus可以通过Wrapper构造SQL执行条件,程序员就看不到一条条SQL语句,而阅读和检查SQL逻辑是比较耗费精力的事,如果从这一角度看,Mybatis-plus只不过是以后期维护成本为代价换取开发时貌似整洁的优势。

我们不清楚Mybatis-plus的作者最初设计的初衷和想法,但是,对于任何一个工具来讲,脱离场景谈需求就是无稽之谈。大部分情况也许是我们的工作内容就限制了我们的结论。

大部分接触到Mybatis-plus的人都有几个误区

  1. 用了Mybatis-plus就不应该用mybatis了

  2. 用了Mybatis-plus,service层就必须继承BaseService,造成sql操作侵入service层

  3. 用了Mybatis-plus,就必须写QueryWrapper或LambdaQueryWrapper,

    其实,实际开发时应该这样处理:

  1. mybatis-plus是用来增强mybatis的,两者要同时使用

  2. 如果不希望mybatis-plus侵入service层,就在团队里约定好service层不要继承BaseService就行了

  3. 基础的单表操作用BaseMapper中封装好的方法,BaseMapper中没有的简单的单表操作可以写QueryWrapper或LambdaQueryWrapper等,而且可以在Mapper接口中写default方法,不用创建实现类。另外,复杂的单表操作和多表联查依然写到mybatis的xml里这才是mybatis-plus的最佳实践。

最后说说我的观点

如果你是在小公司,或者外包,请使用mybatisplus,它能让你少加班,早回家。

当你在大公司,构建大型长期性的项目选mybatis或者JPA。

mybatisplus有其自身的适用场景,在国内很火的,毕竟小公司占大多数,你看它在GitHub上的赞:13.7K,而它依托的mybatist也才17.9k,也没有碾压性的优势。

图片

图片

随便一个面试性的文档整理项目点赞轻松破10k,其中javaguid128k赞,不得不说国内的程序员是真的生猛阿,就java这一支把面试文档项目搞到了128k的赞,而像spring,spring-boot都的甘拜下风。

图片

所以说其实mybatisplus在国内是很有市场的,只是在国外以及大公司不被待见而已。其实我也不是很喜欢它的做法,将mybatis好不容易抽象出去的sql又给弄回代码中了,对后期维护扩展极为不利。但是用mybatisplusi配合生成代码的插件做单表操作是真的爽。

看你自己的情况吧,如果是外包项目或者是那种生命周期不长的小项目,推荐用一下,毕竟不用太考虑后期的扩展和维护。

以上为全部内容。

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值