热门推荐
Mybatis-Plus 介绍 & CRUD & 条件构造器 & 自动填充 & ActiveRecord
2024-10-31 23:22

Mybatis-Plus 介绍 & CRUD & 条件构造器 & 自动填充 & ActiveRecord

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

官网:https://mybatis.plus/ 或 https://mp.baomidou.com/

文档地址:https://mybatis.plus/guide/

源码地址:https://github.com/baomidou/mybatis-plus

image

愿景

我们的愿景是成为 MyBatis 最好的搭档,就像魂斗罗中的 1P、2P,基友搭配,效率翻倍。
image

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

    Mybatis-Plus 是由 baomidou(苞米豆)组织开发并且开源的,目前该组织大概有 30 人左右。

    码云地址:https://gitee.com/organizations/baomidou

    image

    对于 Mybatis 整合 MP,有三种常用用法,分别是:

  • Mybatis + MP
  • Spring + Mybatis + MP
  • Spring Boot + Mybatis + MP
  • jdbc.properties

    Mybatis-config.xml

    使用 SpringBoot 可以进一步地简化 MP 的整合。

    log4j.properties:

    在 MP 中,可以通过 @TableField 注解来指定字段的一些属性。常用场景有以下两点:

    对象中的属性名和字段名不一致的问题(非驼峰)。

    对象中的属性字段在表中不存在的问题。

    代码示例

    测试效果:

    image

    在 MP 中,更新操作有两种方式:一种是根据 id 更新,另一种是根据条件更新。

    MP 提供了多种查询操作,比如根据 id 查询、批量查询、查询单条数据、查询列表、分页查询等。

    配置分页插件:

    在 MP 中,Wrapper 接口的实现类关系如下:

    image

    可以看到,AbstractWrapper 和 AbstractChainWrapper 是重点实现,接下来主要介绍 AbstractWrapper 及其子类。

    说明:

    QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
    用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件。
    而 entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为

    官网文档地址:https://mybatis.plus/guide/wrapper.html

    方法定义一:

    : 为数据库字段名,为字段值
    : 为时,则在的为时调用 isNull 方法;为时,则忽略为。

    方法定义二:

    :过滤函数,是否允许字段传入比对条件中
    与 :同上

    eq 等于 = ne 不等于 <> gt 大于 > ge 大于等于 >= lt 小于 < le 小于等于 <= between BETWEEN 值1 AND 值2 notBetween NOT BETWEEN 值1 AND 值2 in 字段 IN (v0, v1, ...) notIn 字段 NOT IN (v0, v1, ...) like LIKE '%值%' notLike NOT LIKE '%值%' likeLeft LIKE '%值' likeRight LIKE '值%' orderBy ORDER BY 字段, ... orderByAsc ORDER BY 字段, ... ASC orderByDesc ORDER BY 字段, ... DESC

    方法:

  • or
  • 拼接 OR
  • 主动调用表示紧接着下一个方法不是用连接(不调用则默认为使用连接)。
  • and
  • AND 嵌套
  • 例:表示
  • 在 MP 中默认是查询所有的字段,如果有需要也可以通过 select 方法进行指定字段。

    有些时候我们可能会有这样的需求:在插入或更新数据时,希望有些字段可以自动填充数据,比如密码、version 等。在 MP 中就提供了这样的功能,可以实现自动填充。

    FieldFill 提供了多种模式选择:

    测试结果:

    image

    ActiveRecord(简称 AR)一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言,对于
    ActiveRecord 往往只能感叹其优雅。

    什么是 ActiveRecord ?

  • ActiveRecord 也属于 ORM(对象关系映射)层,由 Rails 最早提出,遵循标准的 ORM 模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。
  • ActiveRecord 的主要思想:
  • 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录。通常表的每个字段
    在类中都有相应的 Field 。
  • ActiveRecord 同时负责把自己持久化,在 ActiveRecord 中封装了对数据库的访问,即 CURD 。
  • ActiveRecord 是一种领域模型(Domain Model),封装了部分业务逻辑。
  • 在 MP 中开启 AR 非常简单,只需要将实体对象继承 Model 即可(注意:UserMapper 还是需要保留的)。

        以上就是本篇文章【Mybatis-Plus 介绍 & CRUD & 条件构造器 & 自动填充 & ActiveRecord】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/quote/4935.html 
         行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多