你还没用过Mybatis-Plus?丝般顺滑,快速上手!

2023-01-28  本文已影响0人  分布式与微服务

一、概述

1.1、什么是MyBatis-Plus

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

1.2、特性

1.3、支持数据库

任何能使用 MyBatis 进行 CRUD, 并且支持标准 SQL 的数据库,具体支持情况如下,如果不在下列表查看分页部分教程 PR 您的支持。

1.4、框架结构

二、快速集成

2.1、SpringBoot项目快速集成

如果你的项目已经配置了MyBatis,那么,你只需

1、引入mybatis-plus依赖,替换掉mybatis的依赖

2、将application配置中的mybatis改为mybatis-plus即可

2.2、MyBatis-Plus类的特殊定义

MyBatis-Plus分别对Service层、Mapper层提供了功能拓展

想要使用MyBatis-Plus内置的方法,需要实现MyBatis-Plus的特殊接口

三、CRUD Boy

3.1、CRUD

对于CRUD,MyBatis-Plus提供了两类接口:Service层、Mapper层。功能一样,不同层有不同的方法。

【Service层】

 private finally MyService myService;
 // 保存用户(Service CRUD)
 myService.save(User);

【Mapper层】

 private finally MyMapper myMapper;
 // 保存用户(Mapper CRUD)
 myMapper.insert(User);

3.2、条件构造器

Mybatis提供了QueryWrapper,可以让我们自定义较为复杂的sql查询条件

📢

不支持以及不赞成在 RPC 调用中把 Wrapper 进行传输

  1. wrapper 很重
  2. 传输 wrapper 可以类比为你的 controller 用 map 接收值(开发一时爽,维护火葬场)
  3. 正确的 RPC 调用姿势是写一个 DTO 进行传输,被调用方再根据 DTO 执行相应的操作
  4. 我们拒绝接受任何关于 RPC 传输 Wrapper 报错相关的 issue 甚至 pr

3.3、主键策略

Mybatis-Plus提供了多种主键策略

 public enum IdType {
     AUTO(0), // 数据库id自增
     NONE(1), // 未设置主键
     INPUT(2), // 手动输入
     ASSIGN_ID(3), // 默认的全局唯一id(雪花算法)
     ASSIGN_UUID(4); // uuid
 
     private final int key;
 
     private IdType(int key) {
         this.key = key;
     }
 
     public int getKey() {
         return this.key;
     }
 }

3.3.1、基本使用

比如Mysql数据库,在定义表的时候,字段可以直接设置自增,那么可以直接使用IdType.AUTO做自增

1、数据库字段设置自增

2、实体类添加注解:@TableId(type = IdType.AUTO)

 @TableId(type = IdType.AUTO) // 这个需要配合数据库设置自增来使用
 private Integer id;

3.3.2、INPUT的使用

对于Postgresql数据库,并不支持直接设置字段自增,需要额外设置sequence来完成,那需要使用type = IdType.INPUT来设置

四、拓展

4.1、插件

编写配置文件,在配置文件里集成插件

 @MapperScan("") // 可以把启动类上的dao的文件目录放到这里
 @EnableTransactionManagement
 @Configuration
 public class MyBatisPlusConfig {
     /**
      * 插件配置
      */
 }

4.1.1、分页插件

4.1.2、乐观锁插件

【场景】

当要更新一条记录的时候,在更新的过程中,希望这条记录没有被别人更新

【原理】

乐观锁实现方式:

  • 取出记录时,获取当前 version
  • 更新时,带上这个 version
  • 执行更新时, set version = newVersion where version = oldVersion
  • 如果 version 不对,就更新失败

4.1.3、性能分析插件

对sql的格式化输出、sql执行时间、当超过设置的时间则报错

【建议】:配置仅在dev和test就环境下生效

4.2、代码生成器

mybatis-plus支持通过代码,一键生成:目录、对象文件、代码

上一篇 下一篇

猜你喜欢

热点阅读