【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>

새로운 시작 클래스: 별도의 스프링 부트 프로젝트로 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