MPG工具类代码

package com.demo.utils;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.Arrays;
import java.util.List;


/**
 * MyBatis-Plus 代码自动生成器
 */
public class MPG {
    /**
     * 文件配置类
     */
    private static class CodeGeneratorConfig{
        // 全局配置
        private static String outputDir = System.getProperty("user.dir") + "/src/main/java";   // 生成文件的输出目录 默认是true
        private static boolean fileOverride = false;   // 是否覆盖文件
        private static boolean open = false;    // 是否打开输出目录 默认是 true
        private static String author = "youthme.org";   // 开发作者
        private static boolean swagger2 = true;    // 开启 swagger2 模式
        private static DateType dateType = DateType.ONLY_DATE; // 时间类型对应策略
        private static IdType idType = IdType.AUTO;   //  指定生成的主键的ID类型

        // 数据源配置
        private static String driverName = "com.mysql.cj.jdbc.Driver";  // 驱动名称
        private static String url = "jdbc:mysql://localhost:3306/demo?useSSL=true&useUnicode=true&characterEncoding=UTF8"; // 驱动连接的URL
        private static String username = "root";    // 数据库连接用户名
        private static String password = "888888";  // 数据库连接密码
        private static DbType dbType = DbType.MYSQL;    // 数据库类型

        // 包配置
        private static String moduleName = "";  // 父包模块名
        private static String parent = "com.demo";  // 父包名
        private static String entity = "entity";  // Entity包名
        private static String mapper = "mapper";  // Mapper包名
        private static String xml = "mapper.mapping";  // MapperXml包名
        private static String service = "service"; // Service包名
        private static String controller = "controller";  // Controller包名


        // 策略配置
        private static NamingStrategy naming = NamingStrategy.underline_to_camel;   // 数据库表映射到实体的命名策略
        private static NamingStrategy columnNaming = NamingStrategy.underline_to_camel; // 数据库表字段映射到实体的命名策略
        private static boolean entityLombokModel = true;    // 【实体】是否为lombok模型(默认 false)
        private static String logicDeleteFieldName = "deleted"; // 逻辑删除属性名称
        private static List<TableFill>  tableFills =    // 表填充字段
                Arrays.asList(
                        new TableFill("gmt_create", FieldFill.INSERT),
                        new TableFill("gmt_modified", FieldFill.INSERT_UPDATE)
                );
        private static String versionFieldName = "version"; // 乐观锁属性名称
        private static boolean restControllerStyle = true;
        private static boolean controllerMappingHyphenStyle = true; // url 下划线名命
    }

    /**
     * 构造方法私有化
     */
    private MPG(){}

    /**
     * 执行 MyBatis-Plus 的代码生成器
     * @param tables 需要创建的数据库的表名
     */
    public static void autoGeneratorExecute(String ... tables){
        getAutoGenerator(tables).execute();
    }

    /**
     * 获取 MyBatis-Plus 的代码生成器
     * @param tables 需要创建的数据库的表名
     * @return 返回代码生成器
     */
    private static AutoGenerator getAutoGenerator(String ... tables){
        return new AutoGenerator()
                .setGlobalConfig(globalConfig())    // 设置全局配置
                .setDataSource(dataSourceConfig())  // 设置数据源配置
                .setPackageInfo(packageConfig())    // 设置包配置
                .setStrategy(strategyConfig());     // 设置策略配置
    }

    /**
     * 全局配置
     */
    private static GlobalConfig globalConfig(){
        // 全局配置对象
        return new GlobalConfig()
                .setOutputDir(CodeGeneratorConfig.outputDir)    // 项目输出目录
                .setFileOverride(CodeGeneratorConfig.fileOverride)
                .setOpen(CodeGeneratorConfig.open)
                .setAuthor(CodeGeneratorConfig.author)   // 开发作者
                .setSwagger2(CodeGeneratorConfig.swagger2)
                .setDateType(CodeGeneratorConfig.dateType)
                .setIdType(CodeGeneratorConfig.idType);
    }

    /**
     * 数据源配置
     */
    private static DataSourceConfig dataSourceConfig(){
        return new DataSourceConfig()
                .setDriverName(CodeGeneratorConfig.driverName)
                .setUrl(CodeGeneratorConfig.url)
                .setUsername(CodeGeneratorConfig.username)
                .setPassword(CodeGeneratorConfig.password)
                .setDbType(CodeGeneratorConfig.dbType);
    }

    /**
     * 包配置
     */
    private static PackageConfig packageConfig(){
        return new PackageConfig()
                .setModuleName(CodeGeneratorConfig.moduleName)
                .setParent(CodeGeneratorConfig.parent)
                .setEntity(CodeGeneratorConfig.entity)
                .setMapper(CodeGeneratorConfig.mapper)
                .setXml(CodeGeneratorConfig.xml)
                .setService(CodeGeneratorConfig.service)
                .setController(CodeGeneratorConfig.controller);
    }

    /**
     * 策略配置
     * @param tables 需要创建的表名
     */
    private static StrategyConfig strategyConfig(String ... tables){
        return new StrategyConfig()
                .setInclude(tables)
                .setNaming(CodeGeneratorConfig.naming)
                .setColumnNaming(CodeGeneratorConfig.columnNaming)
                .setEntityLombokModel(CodeGeneratorConfig.entityLombokModel)
                .setLogicDeleteFieldName(CodeGeneratorConfig.logicDeleteFieldName)
                .setTableFillList(CodeGeneratorConfig.tableFills)
                .setVersionFieldName(CodeGeneratorConfig.versionFieldName)
                .setRestControllerStyle(CodeGeneratorConfig.restControllerStyle)
                .setControllerMappingHyphenStyle(CodeGeneratorConfig.controllerMappingHyphenStyle);
    }

    public static void main(String[] args) {
        autoGeneratorExecute();
    }

}

Maven依赖

        <!-- lombok  -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>provided</scope>
        </dependency>

        <!--swagger-->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.6.3</version>
        </dependency>

        <!--mybatis-plus核心库-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>

        <!--代码生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.2</version>
        </dependency>

        <!-- 添加 MP 模板引擎依赖 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>


这个工具类使用的是3.3.2版本的代码生成器依赖,目前只能生成相关的包和类以及xml文件不能自动生成sql语句。

最后修改:2022 年 02 月 28 日
给我一点小钱钱也很高兴啦!o(* ̄▽ ̄*)ブ