【MybatisPlus】Visualización avanzada de versiones, generación de código configurable y automática

Hoy, vi a alguien usando una herramienta de generación de código más inteligente, que es visualizable y configurable. Es muy conveniente. Una vez configurado, se puede usar en cualquier lugar y no se acoplará con el proyecto. Permítanme hablar brevemente sobre cómo úsalo

1. Presente mybatis-plus-generator-ui

Principalmente encapsula mybatis-plus-generator y tiene una interfaz de usuario, todas las cuales están interconectadas, muy convenientes, y también puede personalizar plantillas, etc. Admite POSTGRE_SQL, ORACLE, DB2, MySQL, SQLSERVER y otras bases de datos relacionales comunes.

2. Cómo usar

1. Inicialización

Primero crea un nuevo proyecto maven por ti mismo
inserte la descripción de la imagen aquí

herramienta de importación 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>

Nueva clase de inicio: admite la implementación independiente de GeberatorUIServer como un proyecto de arranque de primavera separado.

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. Empezar

Simplemente ejecute el método principal directamente y especifique el puerto de ejecución del programa como 8086 en el principal, que es muy similar a SpringBoot.
URL de solicitud: http://localhost:8068/

Se muestran hojas de datos.
inserte la descripción de la imagen aquí

3. Generar el código requerido

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
ok Verifique el proyecto y actualícelo, todo generado:
inserte la descripción de la imagen aquí
4, xml puede configurarlo usted mismo
Por ejemplo, quiero agregar una declaración de consulta propia en xml y generarla directamente
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

Se genera todo lo que necesitas, y es muy conveniente.
inserte la descripción de la imagen aquí

3. Configurable

1. Configuración de código

El sufijo Service, Controller, Entity y FieldName se pueden configurar en la clase de inicio
inserte la descripción de la imagen aquí
para lograr extensiones personalizadas, que usted mismo puede implementar.
Puede ver la clase 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. Cambia la plantilla por el código fuente

Si necesita personalizar la interfaz de usuario, después de clonar el código, vaya al directorio de la interfaz y lleve a cabo el desarrollo de la extensión correspondiente.
inserte la descripción de la imagen aquí

Una vez completada la modificación, los recursos estáticos en src\frontend deben compilarse por separado (el código fuente no contiene páginas compiladas) y ejecutarse en la carpeta src\frontend:

yarn install
yarn run build

4. Dirección de origen

Haz el resto por ti mismo~

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

Supongo que te gusta

Origin blog.csdn.net/daohangtaiqian/article/details/130491497
Recomendado
Clasificación