mybatisPlus を始める


ここに画像の説明を挿入

初めて見る

1.1 MybatisPlus を初めて知る

  • MyBatis-Plus (新しいウィンドウで開きます) (略して MP) は、MyBatis (新しいウィンドウで開きます) の拡張ツールであり、MyBatis をベースに、変更を加えずに拡張のみを行い、開発の簡素化と効率の向上を目的として生まれました。

  • Mybatisフレームワークによる開発効率はどうですか?SQL 要件を記述する必要がある場合は、次の手順を実行する必要があります。
  1. Mapper インターフェースは抽象メソッドを提供します
  2. Mapper インターフェースに対応するマッピング構成ファイルは、対応するラベルと SQL ステートメントを提供します。
  3. Service 内の Mapper インスタンス オブジェクトに依存する
  4. Mapperインスタンスでメソッドを呼び出す
  5. コントローラーのサービスインスタンスオブジェクトに依存する
  6. Service インスタンスでメソッドを呼び出す
    上記の結果から、SQL 要件の場合、それが単一のテーブルであっても複数のテーブルであっても、SQL 要件の開発を実現するには上記の手順を完了する必要があります。

  • ただし、開発では、一部の操作は共通ロジックであり、簡略化できます。次に例を示します。
    1. Dao の場合、フレームワークは、プログラマーがこれらを実装する必要なく、優れた単一テーブル マッパー抽象メソッドと対応する SQL 実装を提供できますか?
    2. サービスについては、プログラマーがこれらを実装する必要がなく、サービスの抽象メソッドと対応する実装を提供するのに直接役立つフレームワークがあります。
    3. エンタープライズ開発に必要なその他の操作
  • 実際、コア フレームワークは変更されておらず、依然として Mybatis ですが、MybatisPlus は Mybatis をカプセル化し、進化させて、より便利で使いやすいものにしています。

1.2 MybatisPlusの特徴

  • 侵入なし: 変更せずに機能強化のみが行われ、導入しても既存のプロジェクトには影響しません。
  • 低損失: 基本的な CURD は開始時に自動的に挿入され、パフォーマンスは基本的に損失がなく、オブジェクト指向の操作が直接実行されます。
  • 強力な CRUD 操作: 組み込みの一般的なマッパーと一般的なサービス。単一テーブルの CRUD 操作のほとんどは、わずかな構成だけで実現でき、強力な条件付きコンストラクターがあります。
  • Lambda フォーム呼び出しのサポート: Lambda 式を使用すると、さまざまなクエリ条件を記述するのに便利で、フィールドのタイプミスを心配する必要がありません。
  • 主キーの自動生成をサポート: 最大 4 つの主キー戦略 (分散固有 ID ジェネレーター - シーケンスを含む) をサポートし、主キーの問題を完全に解決するために自由に構成できます。
  • ActiveRecord モードのサポート: ActiveRecord フォーム呼び出しをサポートします。エンティティ クラスは Model クラスを継承するだけで強力な CRUD 操作を実行できます。
  • カスタム グローバル一般操作のサポート: グローバル一般メソッド インジェクションのサポート (一度書いたらどこでも使用可能)
  • 組み込みのコード ジェネレーター: コードまたは Maven プラグインを使用して、マッパー、モデル、サービス、およびコントローラー層のコードを迅速に生成し、テンプレート エンジンをサポートします。
  • 組み込みのページング プラグイン: MyBatis の物理ページングに基づいており、開発者は特定の操作を気にする必要はありません。プラグインの設定後、ページングの記述は通常のリスト クエリと同等です。
  • ページング プラグインは複数のデータベースをサポートします。MySQL、MariaDB、およびその他のデータベースをサポートします。
  • 組み込みのパフォーマンス分析プラグイン: SQL ステートメントとその実行時間を出力できます。遅いクエリを迅速に発見できるため、開発およびテスト中にこの機能を有効にすることをお勧めします。
  • 組み込みのグローバル インターセプト プラグイン: テーブル全体に対する削除および更新操作のインテリジェントな分析とブロックを提供し、誤操作を防ぐためにインターセプト ルールをカスタマイズすることもできます。

1.3 MybatisPlusのアーキテクチャモデル

ここに画像の説明を挿入

入門ケース

2.1 適切な開発環境を準備する

  • アイディア
  • 郵便配達員
  • ナビキャット/スクリョグ
  • MySQL 5.+
  • JDK1.8

2.2 Springboot プロジェクトのビルド

ここに画像の説明を挿入

2.3 データベースの作成

  • データベースを作成するmybatisplus
  • テーブル作成ステートメント
DROP TABLE IF EXISTS user;
CREATE TABLE user(
    id BIGINT(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (id));
  • テーブルデータの追加
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

2.4 関連する依存関係の導入

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

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.5 エンティティクラスの作成

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    
    
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

2.6 MybatisPlus の統合

  1. マッパーインターフェースを書く
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.powernode.domain.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
    
    
}
  1. 書き込みサービスインターフェイス
package com.powernode.service;

import com.powernode.domain.User;

import java.util.List;

public interface UserService extends IService<User> {
    
    
    List<User> selectList();
}
  1. ServiceImpl の書き込み
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
    
    
    @Autowired
    UserMapper userMapper;


    @Override
    public List<User> selectList() {
    
    
        return userMapper.selectList(null);
    }
}
  1. 書き込みコントローラー
import com.powernode.domain.User;
import com.powernode.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {
    
    
    @Autowired
    UserService userService;

    @RequestMapping("/selectList")
    public String selectList() {
    
    
        List<User> all;
        all = userService.selectList();
        return all.toString();
    }
}
  1. 設定ファイルを書き込む
spring:
  datasource:
    password: xxx
    username: xxx
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false

2.7 単体テスト

  • 単体テストによって記述される
@SpringBootTest
class Mp02ApplicationTests {
    
    

    @Autowired
    private UserMapper userMapper;

    @Test
    void selectList() {
    
    
        List<User> userList = userMapper.selectList(null);
        System.out.println(userList);
    }
}

2.8 スプリングブート ログの最適化

  1. mybatisplusのロゴを削除する
mybatis-plus:
  global-config:
    banner: false
  1. スプリングブーツのロゴを削除
spring:
    main:
     banner-mode: off
  1. MybatisPlusの実行ログ
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

おすすめ

転載: blog.csdn.net/yang2330648064/article/details/131939525