MyBatis-Plus ビジュアル コード ジェネレーターは、開発効率を大幅にスピードアップします。!

序文

Mybatis をベースとした開発モードでは、開発効率を向上させるために、機能開発を支援するために Mybatis-Plus を選択する開発者も多くなります。Mybatis にもコード生成ツールはありますが、Mybatis-Plus は Mybatis をベースにいくつかの調整を行っているため、従来の生成ツールで生成されたコードはまだ期待を満たしていません。また、複数のデータベースのサポートはあまり良くありません。

したがって、高度なカスタマイズをサポートし、グラフィカル UI ページを備え、ほとんどのデータベースに適応できる基本的なプログラム生成フレームワークが必要です。この記事では、Mybatis-Plus (github アドレス: mybatis-plus-generator-ui) に基づくこのコード セルフサービス ジェネレーターを紹介します。

この記事では、統合例を通じて mybatis-plus-generator-ui について詳しく説明していますので、興味のある友人は自分で複製したり、自分で拡張したりカスタマイズしたりすることができます。

1. mybatis-plus-generator-ui とは何ですか?

mybatis-plus-generator をカプセル化し、Web UI を通じて Spring Boot および mybatis-plus フレームワークと互換性のあるさまざまなビジネス コードを迅速に生成します。インタラクティブな Web UI は、Entity、Mapper、Mapper.xml、Service、Controller などを含む、mybatis-plus フレームワークと互換性のある関連関数コードを生成するために提供されます。テンプレートやさまざまな出力パラメータをカスタマイズするか、SQL クエリを通じて直接コードを生成できます。 。

機能リスト:

  • テーブル クエリ:構成されたリレーショナル データベース テーブルのリスト クエリをクエリします。
  • 出力構成:変換中に呼び出すために、Entity、Mapper、Servcie、Controller などのコード テンプレート情報など、生成する必要がある関連コードを構成します。
  • プロジェクトのインポート:このプロジェクトで使用するために他のプロジェクトによって構成された情報をインポートできます。
  • テンプレートのダウンロード:このプロジェクトの構成をサポートするテンプレート情報がダウンロードされ、共有されます。
  • ポリシー設定:さまざまなファイルの生成ポリシーを直接定義します。
  • テンプレートのアップロード:他のプロジェクトからテンプレートをダウンロードしたり、このプロジェクトで使用するためにそれらをアップロードしたりすることがサポートされています。
  • SQL 入力アップロード:入力ボックスへのクエリ ステートメントの直接アップロードまたはコピーをサポートします。
  • SQL コード生成: SQL スクリプトに基づいて対応するコードを生成します。

2. mybatis-plus-generator-ui の使用方法は?

mybatis-plus-generator-ui は、jar パッケージの形式で外部プロジェクトにサービスを提供し、構成されたデータベース構成を通じてデータベースの構成情報を読み取り、Web UI を通じて開発者に提供します。mybatis-plus-generator-ui は、POSTGRE_SQL、ORACLE、DB2、MySQL、SQLSERVER などの一般的なリレーショナル データベースをサポートします。

オープンソースで無料の Spring Boot の最も完全なチュートリアルをお勧めします。

https://github.com/javastacks/spring-boot-best-practice

1.maven pomの導入

<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.yelang</groupId>
 <artifactId>mybatis-plus-generator-ui-case</artifactId>
 <version>0.0.1-SNAPSHOT</version>

 <dependencies>
  <dependency>
   <groupId>com.github.davidfantasy</groupId>
   <artifactId>mybatis-plus-generator-ui</artifactId>
   <version>1.4.5</version>
  </dependency>

  <dependency>
   <groupId>org.postgresql</groupId>
   <artifactId>postgresql</artifactId>
   <version>42.2.25</version>
  </dependency>
 </dependencies>
</project>

2. 新しいプログラムエントリを作成し、メイン関数として実行します。

mybatis-plus-generator-ui バージョン 1.4.0 以降では、GeberatorUIServer の独立したデプロイメントを別個の Spring Boot プロジェクトとしてサポートでき、ページ上でターゲット プロジェクトのルート ディレクトリを指定することで、複数のプロジェクトにソース コード生成サービスを提供できます。この方法は、複数のプロジェクト ライブラリを個別に開発する必要があるモードに適しています。例のキーコードは次のとおりです。

package com.yelang;

import com.github.davidfantasy.mybatisplus.generatorui.GeneratorConfig;
import com.github.davidfantasy.mybatisplus.generatorui.MybatisPlusToolsApplication;
import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter;

public class GeneratorMain {

 public static void main(String[] args) {
  GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:postgresql://127.0.0.1:5432/ghyapp")
    .userName("ghy01").password("ghy01").driverClassName("org.postgresql.Driver")
    // 数据库schema,POSTGRE_SQL,ORACLE,DB2类型的数据库需要指定
    // .schemaName("myBusiness")
    // 如果需要修改各类生成文件的默认命名规则,可自定义一个NameConverter实例,覆盖相应的名称转换方法:
    .nameConverter(new NameConverter() {
     /**
      * 自定义Service类文件的名称规则
      */
     public String serviceNameConvert(String tableName) {
      return this.entityNameConvert(tableName) + "Service";
     }

     /**
      * 自定义Controller类文件的名称规则
      */
     public String controllerNameConvert(String tableName) {
      return this.entityNameConvert(tableName) + "Action";
     }
    }).basePackage("com.github.davidfantasy.mybatisplustools.example").port(8068).build();

  MybatisPlusToolsApplication.run(config);

 }

}

上記の構成では、接続するサンプル データベースは PostgerSQL で、対応するドライバーは Maven で定義する必要があり、対応するクラスは上記のコードで正しく構成されています。最後に、プログラムの実行ポートは 8086 として指定されます。これは SpringBoot とよく似ています。

3. インスタンスの実行

上記の main メソッドを実行すると、コンソールに次の出力が表示されます。これは、デプロイが成功したことを意味します。

出力ログでは、プログラムの実行ポートとデフォルトのテンプレート ディレクトリ アドレスを確認できます。ブラウザにアクセス アドレス http://localhost:8068/ を入力して構成を生成します。

3、mybatis-plus-generator-ui コード生成

1. テーブルのクエリと参照

構成されたデータ ソースのデータ テーブル情報を直接参照してクエリすることができ、テンプレート コードを生成するために 1 つ以上を選択できます。

2. 出力構成

エンティティ、マッパー、サービス、コントローラーを含む 6 種類のコード用の組み込みテンプレート構成により、テンプレートをアップロードして置き換えたり、さまざまなパラメーターを変更したりできます。構成パラメーターは影響を受けるファイルの種類に応じて再分類され、一部のテキストの説明は次のようになります。他のタイプのカスタム出力ファイルを自分で追加できます。すべての構成項目はプロジェクト パッケージ名に従って保存され、設定は 1 回だけ必要になります。

3. ポリシーの設定

コードが生成されるたびに変更される可能性がある内容をコード生成オプションに追加して、元のファイルを上書きするかどうか、生成されるファイルの種類など、毎回の生成戦略を調整します。

4. SQL構成の生成

クエリSQLを入力することで、対応するクエリメソッド、DTOオブジェクト、ResultMap(結果セットのマッピング構成)をMapper(Xml、Java)上で自動生成できます。

5. コード生成

4. カスタム拡張機能

1. 関連するテンプレートの調整

関連するページでは、対応する調整を行ったり、対応する btl テンプレート内の対応するファイルの特定のテンプレートをダウンロードしたり、テキスト ツールで開いたり、ソース コードを直接変更したりすることができます。記事では 1 つの方法が例として取り上げられています。他の方法も同じです。

2. コードレベルの構成

チームによっては、Mapper を Dao として定義し、Controller 層を Action として定義する必要がある場合があり、コード テンプレート btl を変更することも可能ですが、別の方法として内部マッピングを変更することもできます。使用される主なクラスは NameConverter です。

/**
* 自定义Service类文件的名称规则
*/
public String serviceNameConvert(String tableName) {
 return this.entityNameConvert(tableName) + "Service";
}

/**
* 自定义Controller类文件的名称规则
*/
public String controllerNameConvert(String tableName) {
  return this.entityNameConvert(tableName) + "Action";
}

Service、Controller、Entity、FieldName に加えて、カスタム拡張機能を実装できます。以下は NameConverter クラスのコア コードであり、詳細な定義は次のとおりです。

package com.github.davidfantasy.mybatisplus.generatorui.mbp;

import cn.hutool.core.util.StrUtil;
import com.github.davidfantasy.mybatisplus.generatorui.dto.Constant;
import com.google.common.base.Strings;

import static com.github.davidfantasy.mybatisplus.generatorui.dto.Constant.DOT_JAVA;
import static com.github.davidfantasy.mybatisplus.generatorui.dto.Constant.DOT_XML;

/**
 * 自定义各类名称转换的规则
 */
public interface NameConverter {

    /**
     * 自定义Entity.java的类名称
     *
     * @param tableName 表名称
     * @return
     */
    default String entityNameConvert(String tableName) {
        if (Strings.isNullOrEmpty(tableName)) {
            return "";
        }
        tableName = tableName.substring(tableName.indexOf(StrUtil.UNDERLINE) + 1, tableName.length());
        return StrUtil.upperFirst(StrUtil.toCamelCase(tableName.toLowerCase()));
    }

    /**
     * 自定义表字段名到实体类属性名的转换规则
     *
     * @param fieldName 表字段名称
     * @return
     */
    default String propertyNameConvert(String fieldName) {
        if (Strings.isNullOrEmpty(fieldName)) {
            return "";
        }
        if (fieldName.contains("_")) {
            return StrUtil.toCamelCase(fieldName.toLowerCase());
        }
        return fieldName;
    }

    /**
     * 自定义Mapper.java的类名称
     */
    default String mapperNameConvert(String tableName) {
        return entityNameConvert(tableName) + "Mapper";
    }

    /**
     * 自定义Mapper.xml的文件名称
     */
    default String mapperXmlNameConvert(String tableName) {
        return entityNameConvert(tableName) + "Mapper";
    }

    /**
     * 自定义Service.java的类名称
     */
    default String serviceNameConvert(String tableName) {
        return "I" + entityNameConvert(tableName) + "Service";
    }

    /**
     * 自定义ServiceImpl.java的类名称
     */
    default String serviceImplNameConvert(String tableName) {
        return entityNameConvert(tableName) + "ServiceImpl";
    }

    /**
     * 自定义Controller.java的类名称
     */
    default String controllerNameConvert(String tableName) {
        return entityNameConvert(tableName) + "Controller";
    }

    /**
     * 自定义其它生成文件的文件名(不包括entity,mapper.java,mapper.xml,service,serviceImpl,controller这6种)
     *
     * @param fileType  在页面上输入的输出文件标识
     * @param tableName 关联的数据表名称名称
     * @return 生成文件的名称,带后缀
     */
    default String outputFileNameConvert(String fileType, String tableName) {
        if (fileType.equals(Constant.FILE_TYPE_ENTITY)) {
            return this.entityNameConvert(tableName) + DOT_JAVA;
        } else if (fileType.equals(Constant.FILE_TYPE_MAPPER)) {
            return this.mapperNameConvert(tableName) + DOT_JAVA;
        } else if (fileType.equals(Constant.FILE_TYPE_MAPPER_XML)) {
            return this.mapperXmlNameConvert(tableName) + DOT_XML;
        } else if (fileType.equals(Constant.FILE_TYPE_SERVICE)) {
            return this.serviceNameConvert(tableName) + DOT_JAVA;
        } else if (fileType.equals(Constant.FILE_TYPE_SERVICEIMPL)) {
            return this.serviceImplNameConvert(tableName) + DOT_JAVA;
        } else if (fileType.equals(Constant.FILE_TYPE_CONTROLLER)) {
            return this.controllerNameConvert(tableName) + DOT_JAVA;
        }
        return this.entityNameConvert(tableName) + fileType;
    }

}

mybatis-plus-generator-ui は機能が非常に豊富で、ui のカスタマイズや変更も可能です。UI をカスタマイズする必要がある場合は、コードを複製した後、対応する拡張機能開発用のフロントエンド ディレクトリに入ります。

変更が完了したら、src\frontend の静的リソースを個別にコンパイルし (ソース コードにはコンパイルされたページは含まれません)、src\frontend フォルダーで実行する必要があります。

yarn install
yarn run build

V. まとめ

以上が今日のお話ですが、この記事ではMybatis-Plusをベースにしたコードセルフサービスジェネレーターを簡単に紹介します。

https://github.com/davidfantasy/mybatis-plus-generator-ui

この記事では、mybatis-plus-generator-ui について、関連概念から実際の統合事例、具体的な拡張機能開発の紹介まで、統合例を用いて詳しく説明します。仕事でそのような必要がある場合は、この方法を採用するのもよいでしょう。この記事があなたのお役に立てば幸いです。ガイドと交換を歓迎します。

元のリンク: https://blog.csdn.net/yelangkingwuzuhu/article/details/128077533

著作権に関する声明: この記事は CSDN ブロガー「Yelang king」によるオリジナルの記事であり、CC 4.0 BY-SA 著作権契約に従っています。転載する場合は、元のソース リンクとこの声明を添付してください。

最近のおすすめ記事:

1. 1,000 を超える Java 面接の質問と回答 (2022 年最新バージョン)

2.素晴らしい!Java コルーチンが登場します。

3. Spring Boot 2.x チュートリアル、包括的すぎる!

4.画面を爆発や爆発で埋め尽くさないで、デコレーターモードを試してください。これがエレガントな方法です。

5.最新リリースの「Java 開発マニュアル (松山編)」をすぐにダウンロードしてください!

気分がいいので、「いいね!」+「転送」を忘れないでください!

おすすめ

転載: blog.csdn.net/youanyyou/article/details/130806904