一、Mybatis-Plus简介

优势(继承Mybatis)

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

    劣势

  • 简单CURD操作也要写SQL,开发量大

  • XML中需要维护大量SQL
  • 自身功能少,需要依赖插件
  1. 无侵入,损耗小,强大的Curd操作
  2. 支持lambda形式调用,支持多种数据库
  3. 支持主键自动生成,支持ActiveRecord模式
    https://mybatis.plus/
    MyBatisPlus - 图1
    启动时扫描实体->(容器启动时)注入curd方法,如果存在则不注入
    core,注解,代码生成器,扩展,springboot启动器

二、简单使用

https://mybatis.plus/guide/quick-start.html

三、BaseMapper

3.1使用方法

  1. public interface UserMapper extends BaseMapper<User> {
  2. }

3.2 实体上常用注解

  1. 给实体类制定表名@TableName("table_name")
  2. 指定主键@TableId
  3. 指定对应列@TableField("字段名")
  4. 序列主键策略注解@KeySequence

3.3基类CURD方法

MyBatisPlus - 图2

3.3.1 insert

  1. id自动填充为long型,默认实体类主键叫id,可以通过注解修改
  2. 默认实体类名(成员属性名)驼峰对应数据库中表名(字段名)下划线
  3. 排除不保存到数据库的实体类属性
    ①private transient String remark; //不进行序列化
    ②private static String remark; //静态变量
    @TableField(exist=false)指定注解

3.3.2 select

  • 三种普通查询
    1.根据主键id查询[返回单个]
    2.根据主键idList查询[返回List]
    3.根据map条件查询[返回List]
  • 条件构造器查询Wapper
    MyBatisPlus - 图3
    大于 小于 like between exist 排序
    调用函数(apply)
    子查询(inSql(“列名”,”子查询sql语句”))
    limit(last在sql后添加语句)
    MyBatisPlus - 图4MyBatisPlus - 图5
    只列出需要的字段 .select(“id”,”name”)
    排除两列
    MyBatisPlus - 图6
    判断空的条件查询
    MyBatisPlus - 图7
  • condition,通过实体查询
  • 自定义sql
  • 分页查询,Mybatis分页是逻辑分页都查出来取部分,https://mybatis.plus/guide/page.html MP是物理分页

>>更多条件构造器使用<<

3.3.3 update

主键更新,条件更新,

3.3.4 delete

最好增加删除状态,防止没加where删除整个表

四、插件

MyBatisPlus - 图8

1. 乐观锁插件

版本号,乐观锁标记注解@Version
添加乐观锁config类插件

2. 逻辑删除插件

image.png
配置文件:
image.png
image.png

3. 公共字段自动填充插件

拦截SQL时自动添加创建时间和修改时间,版本号
image.png

    ![image.png](https://cdn.nlark.com/yuque/0/2020/png/602847/1586176778256-e1eef8ad-e7e9-4955-a3aa-73a79494df4f.png#align=left&display=inline&height=74&margin=%5Bobject%20Object%5D&name=image.png&originHeight=147&originWidth=855&size=108725&status=done&style=none&width=427.5)

4. SQL性能分析插件

image.png

5. 分页插件

完整教程连接