MyBatis-Plus 简介

一:MyBatis 优势和劣势

优势:

  • SQL语句可以自由控制,更灵活,性能更高。
  • SQL与代码分离,易于阅读和维护。
  • 提供XML标签,支持编写动态SQL语句。

劣势:

  • 对于简单的单表操作没有提供一套现成的通用的增删改查(CRUD)操作,这需要我们自己去写一套,虽然每套SQL都非常简单,但是一般系统中这种单表操作的都非常多,此时我们就需要写很多套,感觉非常的繁琐,也非常的浪费时间。

  • MyBatis自身功能不够丰富,但支持Plugin,例如没有自带分页插件、没有分布式ID支持等。

MyBatis最大的不足就是对于简单的单表操作没有提供一套开箱即用的通用持久化操作,这是最大的不足而对于MyBatis自身功能不够丰富其实这点都可以通过其它方式来实现。

二:MyBatis-Plus 简介

MyBatis-PlusMapper4 就是解决MyBatis单表操作的不足,这两个技术公司中都很常用。个人认为Mapper4没有MyBatis-Plus好用,感觉Mapper4在使用上没有MyBatis-Plus使用的优雅。

MyBatis-Plus( https://mybatis.plus/)简称 MP是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 可以不需要写SQL语句就能快速完成单表的操作,MyBatis-Plus的愿景就是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

在这里插入图片描述

三:MyBatis-Plus 特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

  • 分页插件:MyBatis中使用pagehelper来作为分页插件。
  • 分布式ID:很多公司使用推特的雪花算法IdWorker来作为分布式ID。
  • 自动填充:可以通过数据库默认值或者自己填充来实现。
  • 代码生成器:MyBatis也提供了代码生成器,如果感觉MyBatis提供的代码生成器不好,也可以自己写一套,其实是非常简单的,我们连接上数据库就可以获取所有的表以及对应的所有字段,我们自己生成文件即可。
  • 枚举值:这个功能算是比较实用的。
  • 逻辑删除:我们直接调用update方法修改状态即可。

四:MyBatis-Plus 架构

在这里插入图片描述

  1. 扫描实体类。
  2. 通过反射技术分析表名和列名。
  3. 生成Insert、Update、Delete、Select语句。
  4. 将生成的增删改查语句注入到MyBatis容器中。

猜你喜欢

转载自blog.csdn.net/weixin_45525272/article/details/123077950