MP是一个很响亮的名字,毕竟在Mybatis后面加了一个plus,就好像Iphone机型后面加了plus就感觉更牛一样。但是我要告诉你,Mybatis-plus的特性只会让你的代码更烂。Mybatis-plus的神奇之处在于,它能让你的代码看起来整洁并且在开发阶段降低SQL报错的概率,但同时降低代码复用性和层次结构的清晰度,大幅增加代码修改维护成本。

代码整洁本身是为了降低修改成本的,MP本末倒置。
整洁的代码意味着阅读代码的时间成本降低,但是如果使用MP,在你阅读service层代码时,还会看到在代码中拼装SQL执行条件的部分。这样一来,service层代码和数据库访问层代码混淆在一起,让程序员很难专注的关心某一细节。常见的SQL操作MP可以通过Wrapper构造SQL执行条件,程序员就看不到一条条SQL语句,而阅读和检查SQL逻辑是比较耗费精力的事,MP只不过是以后期维护成本为代价换取开发时貌似整洁的优势。

SQL执行错误是最容易修改的错误
如果你使用纯Mybatis相比MP会更容易爆出SQL执行错误。其实大可不必太在乎这个问题,如果是SQL执行逻辑有问题,那不管MP还是Mybatis都会报错。如果是SQL语法错误,由于SQL语法错误在Java开发中错误日志非常显眼,所以你可以通过复制日志中报错的SQL然后代码全局搜索快速定位出错位置,而且SQL语法错误基本都是字段名写错或者执行条件顺序错误,这都是非常容易修改的BUG。

纯Mybatis具有更好的代码复用性
比如,我要查询班级id为7,的所有班干部同学。你在纯Mybatis中会一次性将SQL写进XML文件中,如果在项目中这条SQL需要调用N次,你只需要在这N个地方都传参调用即可。但如果用了MP,你需要将相同的代码复制N次。

为什么不建议你使用Mybatis-plus相关推荐

  1. 为什么国内流行的 MyBatis ,国外 Java 工程师却不愿意使用?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | zhihu.com/question/30966 ...

  2. 为什么老外不愿意用 MyBatis?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:知乎@陈龙 链接:zhihu.com/question/30 ...

  3. 为什么老外不愿意用MyBatis?

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 来源:知乎 原文链接:http://suo.im/5f4ee4 Spring 团队的Josh L ...

  4. 犯罪心理解读Mybatis拦截器

    原文链接:"犯罪心理"解读Mybatis拦截器 Mybatis拦截器执行过程解析 文章写过之后,我觉得 "Mybatis 拦截器案件"背后一定还隐藏着某种设计动 ...

  5. MyBatis 源码分析 - 映射文件解析过程

    1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程.由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因.所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来, ...

  6. java学习曲线建议

    前言 进入IT领域,就像进入大海-浩瀚而广阔.然而,它又很容易让人迷茫,不知所措.所以,在IT的海洋中,找好一艘船特别重要,这艘船带你前进.减少迷失.这艘船或许是一个人,或一本书,又或许是一篇文章. ...

  7. mybatis源码_MyBatis架构和源码

    Mybatis架构解读 1. 架构图 如题,这就是MyBatis的执行架构图.解释一下:我们在使用MyBatis的CRUD操作的时候,一般有两种方式,一.直接调用sqlSession的crud方法:二 ...

  8. MyBatis 快速入门

    MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  9. Java学习笔记10-2——MyBatis

    文章目录 MyBatis详细执行流程 使用注解开发 面向接口开发 使用注解开发 复杂查询 多对一问题 测试环境搭建 按照查询嵌套处理(子查询.嵌套查询) 按照结果查询(联表查询.联合查询) 一对多问题 ...

  10. 【MyBatis 面试题】

    1.JDBC有几个步骤? JDBC大致可以分为六个步骤: 加载驱动程序 获得数据库连接 创建一个Statement对象 操作数据库,实现增删改查 获取结果集 关闭资源 2.什么是Mybatis? 如果 ...

最新文章

  1. 怎么获取web项目的webroot根目录下面的文件夹的路径?
  2. Redis 实战笔记
  3. gpio复用 海思_实现海思平台GPIO驱动
  4. java控制台输入汉字_给我一个JAVA控制台输入中文的实例
  5. 唯一的超级语言,前进的步伐不可阻挡
  6. stl::map之const函数访问
  7. struts.xml头文件
  8. C# SOCKE通信
  9. Apple原装扫描二维码指定区域
  10. 《深入浅出WPF》视频列表
  11. ARMv6 ARMv7 架构 整体介绍
  12. 每日单词20110606
  13. Git配置KDiff3
  14. 自动生成Makefile的全过程详解2
  15. [开发证书] Apple PKI
  16. 最新最全论文合集——纵向联邦学习
  17. format函数python生成列表_python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)...
  18. tomcat官方下载(历史版本,旧版本)
  19. sparksql内写linux脚本,shell脚本调用spark-sql
  20. linux路由配置秘籍,最新最全秘籍:如何提升路由器信号强度?

热门文章

  1. Prcc2019资源and学习笔记
  2. GitHub如何从远程库克隆
  3. 梅森数-形如2n−1的素数称为梅森数
  4. 求1!+2!+....+10!
  5. 2020 年百度之星·程序设计大赛 - 初赛一题解
  6. 中科院正研制多核CPU龙芯3号 将用于超级计算机(转)
  7. 从零开始前端学习[38]:html5中的弹性布局一(移动端响应式实现各种布局,极其重要)
  8. Vue接入Google Adsense
  9. 个人作业——A001-185-2513-吴光华
  10. FotoMagico Pro 5.6.6 特别版 Mac 优秀电子视频相册制作工具软件