天天看點

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

mybatis plus 快速入門

  • 環境搭建
  • 一、基本的crud
    • 查詢所有
    • 按照條件查詢
      • 1)根據id查詢,查詢一個
      • 2)根據id查詢,查詢多個
    • 插入
      • 1)簡單的插入資料
      • 插入過程分析
      • 1)插入之前是沒有id的,插入之後就有id了
      • 2)id的生成政策
    • 修改
    • 删除
      • 需要增加一個字段 deleted,配上對應的注解
      • 增加 yml 配置
  • 二、分頁操作
  • 三、自動填充功能

環境搭建

導入mybatis plus 依賴,注意,導入mybatis plus依賴之後,就不要再導入mybatis 的依賴,可能會有依賴沖突

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

建 spring boot 工程

導入依賴

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.0.5</version>
</dependency>

           

一、基本的crud

1)寫對應的實體類

User

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

2)mapper接口,繼承一個父類即可

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

3)繼承父類之後,就可以直接調用服類的方法

查詢所有

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

按照條件查詢

1)根據id查詢,查詢一個

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

2)根據id查詢,查詢多個

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能
mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

3)根據某個條件或幾個條件查詢,查詢

插入

1)簡單的插入資料

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

插入過程分析

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

1)插入之前是沒有id的,插入之後就有id了

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

2)id的生成政策

預設是 雪花算法,可以保證id 是全局唯一的,并且和UUID不同,雪花算法的id是數字,數字可以是有序的

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

可以通過注解的方式,控制主鍵的正常政策

有如下幾種生成政策,預設是 ID_WORKER

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能
  • AUTO 自增的方式
  • NONE 沒有主鍵
  • INPUT 每次插入需要帶上主鍵,不會自動生成
  • ID_WORKER 雪花算法,生成的主鍵是Long 類型的資料
  • UUID通過UUID·的方式 ID_WORKER_STR ID_WORKER的字元串表示,生成的主鍵是String 類型的資料

修改

修改,需要傳入一個對象

修改的時候,可以應用樂觀鎖的機制

加一個 version 字段

給配置類增加一個 bean

/**
 * 樂觀鎖插件 針對字段 version
 * @return
 */
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
    return new OptimisticLockerInterceptor();
}
           

修改 id 為 4 的name

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

修改之後,version 值變成了1

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

以上測試的是正常的情況

下面模拟高并發的情況

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

下面的執行結果說明

user.setName("updateName222222");
userMapper.updateById(user);
           

這兩句是執行成功的

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

最終的結果

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

删除

邏輯删除

需要增加一個字段 deleted,配上對應的注解

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

增加 yml 配置

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

上面對的配置 表示 邏輯删除之後,deleted 字段變成 1;沒有删除之前,deleted 字段的值是 0

(可以設定 deleted 字段的預設值就是 0)

低版本的mybatis plus 邏輯删除需要給配置類一個 bean

/**
 * 邏輯删除 針對字段 deleted
 * @return
 */
@Bean
public ISqlInjector sqlInjector() {
    return new LogicSqlInjector();
}
           

删除之前的資料

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

删除之後的資料

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

注意:

筆者一開始用的 插件的版本是 3.0.5

在做邏輯删除的時候,需要在 配置類裡面加上面的 bean

換了最新的版本(3.3.2)之後,隻需要加上注解即可,不需要 在配置類裡面添加攔截器的配置也是可以正常的邏輯删除的

二、分頁操作

增加一個配置bean

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

測試代碼

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

三、自動填充功能

場景:阿裡開發規定,每張表 需要有 建立時間字段和修改時間字段,這兩個字段基本上是自動的填充

1)通過資料庫設定字段預設值的方式

dateTime CURRENT_TIMESTAMP

2)通過代碼填充的方式

3)通過插入和修改時,帶上字段 ,并設定時間

在mybatis 的xml 中

NOW()函數以`'YYYY-MM-DD HH:MM:SS’傳回目前的日期時間,可以直接存到DATETIME字段中。

CURDATE()以’YYYY-MM-DD’的格式傳回今天的日期,可以直接存到DATE字段中。

CURTIME()以’HH:MM:SS’的格式傳回目前的時間,可以直接存到TIME字段中。

4)mybatis plus 可以自動的填充

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

以上注解的含義如下

mybatis plus 快速入門環境搭建一、基本的crud二、分頁操作三、自動填充功能

FieldFill 可以有 4 個值

INSERT 表示 該字段在插入的時候,填充

UPDATE 表示 該字段在修改的時候,填充

INSERT_UPDATE 表示 該字段在修改的時候,填充;在插入的時候,也填充

是以,上面實體類的配置的含義是

createTime 是在記錄産生的時候填充,填充的是 插入記錄的時間,吻合需求

updateTime 在插入記錄的時候,也填充插入記錄時間,就是給了一個預設的初始值,在記錄被修改的時候,updateTime 會更新成修改記錄的時間