1. 程式人生 > 其它 >MP1️⃣簡介 & 環境搭建

MP1️⃣簡介 & 環境搭建

1、MyBatis Plus

MyBatis-Plus(簡稱 MP

MP 是一個基於 MyBatis 的增強工具,為簡化開發、提高效率而生。

2、環境搭建

基於 Spring Boot 開發

示例:User(id, name, password)

  1. 建立資料庫表
  2. 搭建 Spring Boot 專案
  3. 配置
  4. 建立實體類
  5. 編寫 DAO

2.1、資料庫表

  • 邏輯主鍵:區分每個資料庫記錄,無實際意義。

  • 業務主鍵:區分每個業務實體,即通常意義上的使用者 ID。

  • 使用者名稱、密碼

    CREATE TABLE `t_user` (
      `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '邏輯主鍵',
      `user_id` VARCHAR(32) NOT NULL COMMENT '業務主鍵:使用者ID',
      `name` VARCHAR(16) NOT NULL COMMENT '使用者名稱',
      `password` VARCHAR(32) NOT NULL COMMENT '密碼',
      PRIMARY KEY (`id`)
    );
    

2.2、Spring Boot 專案

若建立失敗,修改 service URL 為 Custom

https://start.springboot.io
  1. 建立專案

  2. 選擇專案存放路徑,Finish

  3. 匯入依賴: MySQL、MyBatis Plus、Druid 資料來源、Lombok

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.2.8</version>
    </dependency>
    
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    

MP 依賴會自動匯入MyBatisMyBatis整合Spring

Hint:不要手動匯入這 2 個依賴,避免(版本)衝突

2.3、配置

2.3.1、內容

application.yml

  • 資料來源配置:驅動名,URL,賬號密碼,連線池型別

  • MP 配置

    • configuration(在 mybatismybatis-plus 下配置都可)

      • 命名風格對映:將資料庫表的下劃線命名風格,對映為 Java 的小駝峰命名風格。
      • 日誌:便於除錯。
    • global-config:資料庫配置 - 表字首(見 2.3.3 說明)。

      spring:
        datasource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/資料庫名?引數
          username: 賬號
          password: 密碼
          type: com.alibaba.druid.pool.DruidDataSource
      mybatis-plus:
        configuration:
          map-underscore-to-camel-case: true
          log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        global-config:
          db-config:
            table-prefix: t_
      

2.3.2、說明

  1. MySQL 8+ 需要配置時區,兩種方式

    1. 追加 URL 屬性(serverTimeZone)
    2. 修改 MySQL 配置檔案(my.ini)
  2. 驅動報錯:說明版本不相容,降低 Spring Boot 版本即可。

  3. 驅動名

    // MySQL 8-
    com.mysql.jdbc.Driver
    // MySQL 8+
    com.mysql.cj.jdbc.Driver
    
  4. 配置表名MP 預設將實體類名的首字母小寫作為表名,通常資料庫表名有自定義字首

    (兩種配置方式)

    • 全域性配置:核心配置類中新增 table-prefix 屬性,在首字母小寫的基礎上新增字首

      mybatis-plus:
        global-config:
          db-config:
            table-prefix: t_
      
    • 個別配置:實體類上新增 @TableName 註解,指定具體表名

      @tableName("t_user")
      public class User {
      }
      

2.4、實體類

indi/jaywee/entity

ORM 原則:實體類的屬性名、型別,對應資料庫表(id 是邏輯主鍵,無需在 entity 呈現

@Data
// @tableName("t_user")
public class User {
    private Long userId;
    private String name;
    private String password;
}

2.5、DAO

2.5.1、DAO 介面

Hint:繼承 BaseMapper<E>,泛型表示要操作的實體。

public interface UserDao extends BaseMapper<User>{
}

不需要編寫 Mapper.xml 和 SQL,此時 UserDao 已獲得 CRUD 功能。

2.5.2、註冊

兩種方式

  1. Dao 介面上新增 @Mapper 註解,前提是 Dao 介面位於 Spring Boot 啟動類的同級包或子包下。

    @Mapper
    public interface UserDao extends BaseMapper<User>{
    }
    
  2. Spring Boot 啟動類上新增 @MapperScan 註解,指定 Dao 介面所在包(建議)。

    @SpringBootApplication
    @MapperScan("indi.jaywee.dao")
    public class MpApplication {
        public static void main(String[] args) {
            SpringApplication.run(MpApplication.class, args);
        }
    }
    

此時 UserDao 已被 Spring 容器託管。

3、說明

經過以上步驟,即完成了基本的環境搭建。

  • 繼承 BaseMapper<T> 並註冊介面,即可獲得基礎 CRUD 功能。
  • 無需編寫 Dao 介面方法和 SQL 語句,簡化了 MyBatis 開發步驟。

MP 特點

  • 無侵入:在 MyBatis 基礎上只做增強不做改變,不影響現有工程。
  • 損耗小:自動注入基本 CRUD,效能基本無損耗,直接面向物件操作。
  • 強大的 CRUD 操作:內建通用 Mapper、通用 Service。通過少量配置實現單表大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求。
  • 支援 Lambda:通過 Lambda 表示式,方便的編寫各類查詢條件,無需再擔心欄位寫錯。
  • 支援主鍵自動生成:支援多達 4 種主鍵策略(內含分散式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
  • 支援 ActiveRecord 模式:支援 ActiveRecord 形式呼叫,實體類只需繼承 Model 類即可進行強大的 CRUD 操作
  • 支援自定義全域性通用操作:支援全域性通用方法注入( Write once, use anywhere )
  • 內建程式碼生成器:採用程式碼或者 Maven 外掛可快速生成 Mapper 、 Model 、 Service 、 Controller 層程式碼,支援模板引擎,更有超多自定義配置等您來使用
  • 內建分頁外掛:基於 MyBatis 物理分頁(LIMIT),開發者無需關心具體操作,配置好外掛之後,寫分頁等同於普通 List 查詢。
  • 分頁外掛支援多種資料庫:支援 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種資料庫
  • 內建效能分析外掛:可輸出 SQL 語句以及其執行時間,建議開發測試時啟用該功能,能快速揪出慢查詢
  • 內建全域性攔截外掛:提供全表 delete 、 update 操作智慧分析阻斷,也可自定義攔截規則,預防誤操作