【MybatisPlus】高度なバージョン視覚化、設定可能および自動コード生成

今日は、視覚化されて設定可能な、よりインテリジェントなコード生成ツールを使用している人を見ました。これは非常に便利です。一度設定すれば、どこでも使用でき、プロジェクトに連動しません。使い方について簡単に説明します。方法。

1.mybatis-plus-generator-uiを導入する

主に mybatis-plus-generator をカプセル化しており、UI はすべてインターフェース化されており非常に便利で、テンプレートなどをカスタマイズすることもできます。POSTGRE_SQL、ORACLE、DB2、MySQL、SQLSERVER、およびその他の一般的なリレーショナル データベースをサポートします。

2. 使用方法

1. 初期化

まず自分で新しい Maven プロジェクトを作成します
ここに画像の説明を挿入

pomインポートツール:

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

新しいスタートアップ クラス: 別個の Spring Boot プロジェクトとして GeberatorUIServer の独立したデプロイメントをサポートします。

package com.springboot.test;

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

/**
 * @author fei.chen
 * @projectName mybatis-generator-ui
 * @date 2023/5/4下午 4:58
 */
public class GeneratorMain {
    
    
    public static void main(String[] args) {
    
    
        GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:postgresql://111.111.111.111:15432/tables")
                .userName("postgres").password("1111111").driverClassName("org.postgresql.Driver")
                // 数据库schema,POSTGRE_SQL,ORACLE,DB2类型的数据库需要指定
                .schemaName("public")
                // 如果需要修改各类生成文件的默认命名规则,可自定义一个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) + "Controller";
                    }
                }).basePackage("com.springboot.test").port(8068).build();

        MybatisPlusToolsApplication.run(config);
    }
}

2.スタート

main メソッドを直接実行し、main でプログラムの実行ポートを 8086 に指定するだけです。これは SpringBoot とよく似ています。
リクエストURL: http://localhost:8068/

データシートが表示されます。
ここに画像の説明を挿入

3. 必要なコードを生成する

ここに画像の説明を挿入
ここに画像の説明を挿入
ok プロジェクトを確認して更新すると、すべて生成されます:
ここに画像の説明を挿入
4、xml は自分で設定できます。
たとえば、xml に独自のクエリ文を追加して直接生成したいです。
ここに画像の説明を挿入

ここに画像の説明を挿入

必要なものがすべて生成されていて、とても便利です
ここに画像の説明を挿入

3. 設定可能

1. コード構成

サフィックス 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;
    }

}

2. ソースコードのテンプレートを変更する

UI をカスタマイズする必要がある場合は、コードを複製した後、フロントエンド ディレクトリに移動し、対応する拡張機能の開発を実行します。
ここに画像の説明を挿入

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

yarn install
yarn run build

4. 送信元アドレス

残りは自分でやれよ〜

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

おすすめ

転載: blog.csdn.net/daohangtaiqian/article/details/130491497