MyBatis-Plus代码生成

代码生成

pom依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.7</version>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.7</version>
</dependency>

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

低配

  • 作者信息,输出目录
  • 实体类:lombok风格
  • mapper:接口和xml
  • service:接口和实现类
  • controller:rest风格
package com.qiangesoft.mybatisplus.util;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;

import java.nio.file.Paths;
import java.util.Collections;

/**
 * 代码生成器
 *
 * @author qiangesoft
 * @since 2024-07-29
 */
public class SimpleCodeGenerator {

    public static void main(String[] args) {
        // 项目根路径,如果是多模块,后面加上模块名称
        String path = Paths.get(System.getProperty("user.dir")).toString();

        FastAutoGenerator
                // 数据库连接信息(必须)
                .create("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false",
                        "root", "root")
                // 全局配置(必须)
                .globalConfig(builder -> builder
                        .author("qiangesoft") // 作者
//                        .enableSwagger() // 开启swagger模式
                        .outputDir(path + "/src/main/java") // 输出目录
                        .disableOpenDir() // 禁止打开
                )
                // 数据源配置(可选)
//                .dataSourceConfig(builder -> builder
//                        .schema("test") // 模式名称,部分数据库适用如ORACLE
//                )
                // 包配置(必须)
                .packageConfig(builder -> builder
                        .parent("com.qiangesoft.demo") // 设置包路径
//                        .moduleName("system") // 设置父包模块名
                        .entity("entity")
                        .mapper("mapper")
                        .service("service")
                        .serviceImpl("service.impl")
                        .pathInfo(Collections.singletonMap(OutputFile.xml, path + "/src/main/resources/mapper")) // 设置mapperXml生成路径
                )
                // 策略配置(可选)
                .strategyConfig(builder -> builder
                        .addInclude("sys_user", "sys_role") // 设置需要生成的表名
//                        .addTablePrefix("sys_") // 设置过滤表前缀
                        // entity配置
                        .entityBuilder()
                        .enableLombok() // lombok风格
                        // controller配置
                        .controllerBuilder()
                        .enableRestStyle() // 启用REST风格
                )
                // 模板引擎(可选)
                .templateEngine(new VelocityTemplateEngine())
                // 执行
                .execute();
    }
}

在这里插入图片描述

中配

  • 作者信息,输出目录,接口文档,时间类型设置
  • 实体类:lombok风格,命名规则,版本号和逻辑删除字段,字段填充
  • mapper:接口添加@mapper注解,xml生成字段属性映射和结果字段
  • service:接口和实现类
  • controller:rest风格,连字符风格
package com.qiangesoft.mybatisplus.util;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.nio.file.Paths;
import java.util.Collections;

/**
 * 代码生成器
 *
 * @author qiangesoft
 * @since 2024-07-29
 */
public class MiddleCodeGenerator {

    public static void main(String[] args) {
        // 项目根路径,如果是多模块,后面加上模块名称
        String path = Paths.get(System.getProperty("user.dir")).toString();

        FastAutoGenerator
                // 数据库连接信息(必须)
                .create("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false",
                        "root", "root")
                // 数据源配置(可选)
//                .dataSourceConfig(builder -> builder
//                        .schema("test") // 模式名称,部分数据库适用如ORACLE
//                )
                // 全局配置(必须)
                .globalConfig(builder -> builder
                        .author("qiangesoft") // 作者
                        .enableSwagger() // 开启swagger模式,与springdoc不可同时使用
//                        .enableSpringdoc() // 开启springdoc模式,与swagger不可同时使用
                        .outputDir(path + "/src/main/java") // 输出目录
                        .commentDate("yyyy-MM-dd") // 文件注释日期格式
                        .dateType(DateType.TIME_PACK) // 时间:util,sql,time
                        .disableOpenDir() // 禁止打开
                )
                // 包配置(必须)
                .packageConfig(builder -> builder
                        .parent("com.qiangesoft.demo") // 设置包路径
//                        .moduleName("system") // 设置父包模块名
                        .entity("entity")
                        .mapper("mapper")
                        .service("service")
                        .serviceImpl("service.impl")
                        .pathInfo(Collections.singletonMap(OutputFile.xml, path + "/src/main/resources/mapper")) // 设置mapperXml生成路径
                )
                // 策略配置(可选)
                .strategyConfig(builder -> builder
                        .addInclude("sys_user", "sys_role") // 设置需要生成的表名
//                        .addTablePrefix("sys_") // 设置过滤表前缀,设置后文件名会去除
                        // entity配置
                        .entityBuilder()
                        .enableLombok() // lombok风格
                        .naming(NamingStrategy.underline_to_camel) // 实体命名,下划线转驼峰
                        .columnNaming(NamingStrategy.underline_to_camel) // 字段命名,下划线转驼峰
                        .idType(IdType.AUTO) // id类型,可根据实际配置
                        .versionColumnName("version") // 版本号字段
                        .logicDeleteColumnName("deleted") // 逻辑删除字段
                        .addTableFills(new Column("create_time", FieldFill.INSERT)) // 字段填充
                        .enableFileOverride() // 文件覆盖
                        // mapper配置
                        .mapperBuilder()
                        .enableMapperAnnotation() // @Mapper注解
                        .enableBaseResultMap()
                        .enableBaseColumnList()
                        .enableFileOverride() // 文件覆盖
                        // service配置
                        .serviceBuilder()
//                        .disableService() // 禁用接口
                        .enableFileOverride() // 文件覆盖
                        // controller配置
                        .controllerBuilder()
                        .enableRestStyle() // 启用REST风格
                        .enableHyphenStyle() // 启用连字符风格
                        .enableFileOverride() // 文件覆盖
                )
                // 模板引擎(可选)
                .templateEngine(new VelocityTemplateEngine())
                // 执行
                .execute();
    }
}

高配

  • 作者信息,输出目录,接口文档,时间类型设置,数据源配置
  • 实体类:lombok风格,命名规则,版本号和逻辑删除字段,字段填充,基类配置,基类字段,忽略字段,文件命名规则
  • mapper:接口添加@mapper注解及基类配置,xml生成字段属性映射和结果字段,文件命名规则
  • service:接口和实现类,基类配置,文件命名规则
  • controller:rest风格,连字符风格,基类配置,文件命名规则
package com.qiangesoft.mybatisplus.util;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import org.apache.ibatis.type.JdbcType;

import java.nio.file.Paths;
import java.util.Collections;

/**
 * 代码生成器
 *
 * @author qiangesoft
 * @since 2024-07-29
 */
public class CodeGenerator {

    public static void main(String[] args) {
        // 项目根路径,如果是多模块,后面加上模块名称
        String path = Paths.get(System.getProperty("user.dir")).toString();

        FastAutoGenerator
                // 数据库连接信息(必须)
                .create("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false",
                        "root", "root")
                // 数据源配置(可选)
                .dataSourceConfig(builder -> builder
//                        .schema("test") // 模式名称,部分数据库适用如ORACLE
                        // 特殊字段映射配置,只是例子不用则注释
                        .typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                            // 兼容旧版本转换成Integer
                            if (JdbcType.TINYINT == metaInfo.getJdbcType()) {
                                return DbColumnType.INTEGER;
                            }
                            return typeRegistry.getColumnType(metaInfo);
                        })
                )
                // 全局配置(必须)
                .globalConfig(builder -> builder
                        .author("qiangesoft") // 作者
                        .enableSwagger() // 开启swagger模式 与springdoc不可同时使用
//                        .enableSpringdoc() // 开启springdoc模式 与swagger不可同时使用
                        .outputDir(path + "/src/main/java") // 输出目录
                        .commentDate("yyyy-MM-dd") // 文件注释日期格式
                        .dateType(DateType.TIME_PACK) // 时间:util,sql,time
//                        .disableServiceInterface() // 关闭service接口
                        .disableOpenDir() // 禁止打开
                )
                // 包配置(必须)
                .packageConfig(builder -> builder
                        .parent("com.qiangesoft.demo") // 设置包路径
//                        .moduleName("system") // 设置父包模块名
                        .entity("entity")
                        .mapper("mapper")
                        .service("service")
                        .serviceImpl("service.impl")
                        .pathInfo(Collections.singletonMap(OutputFile.xml, path + "/src/main/resources/mapper")) // 设置mapperXml生成路径
                )
                // 策略配置(可选)
                .strategyConfig(builder -> builder
                        .addInclude("sys_user", "sys_role") // 设置需要生成的表名
//                        .addTablePrefix("sys_") // 设置过滤表前缀
                        // entity配置
                        .entityBuilder()
                        .enableLombok() // lombok风格
                        .naming(NamingStrategy.underline_to_camel) // 实体命名,下划线转驼峰
                        .columnNaming(NamingStrategy.underline_to_camel) // 字段命名,下划线转驼峰
                        .disableSerialVersionUID() // 禁用序列号id
                        .enableTableFieldAnnotation() // 启用字段注解
                        .idType(IdType.AUTO) // id类型
                        .superClass(BaseEntity.class) // 基类
                        .addSuperEntityColumns("id", "create_time") // 父类的字段
                        .versionColumnName("version") // 版本号字段
                        .logicDeleteColumnName("deleted") // 逻辑删除字段
                        .addIgnoreColumns("remark") // 忽略的字段
                        .addTableFills(new Column("create_time", FieldFill.INSERT)) // 字段填充
                        .addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE)) // 属性填充
                        .formatFileName("%s") // 文件命名格式
                        .enableFileOverride() // 文件覆盖
                        // mapper配置
                        .mapperBuilder()
                        .enableMapperAnnotation() // @Mapper注解
                        .superClass(BaseMapper.class) // 基类
                        .disableMapperXml() // 禁用xml
                        .enableBaseResultMap()
                        .enableBaseColumnList()
                        .formatMapperFileName("%sMapper")
                        .formatXmlFileName("%sMapper")
                        .enableFileOverride() // 文件覆盖
                        // service配置
                        .serviceBuilder()
                        .superServiceClass(IService.class) // 基类
                        .superServiceImplClass(ServiceImpl.class) // 基类
                        .formatServiceFileName("I%sService")
                        .formatServiceImplFileName("%sServiceImpl")
//                        .disableService()
//                        .disableServiceImpl()
                        .enableFileOverride() // 文件覆盖
                        // controller配置
                        .controllerBuilder()
                        .superClass(BaseController.class) // 基类
                        .enableRestStyle() // 启用REST风格
                        .enableHyphenStyle() // 启用连字符风格
                        .formatFileName("%sController")
                        .enableFileOverride() // 文件覆盖
                )
                // 注入配置 扩展(可选)
                .injectionConfig(builder -> builder
                        .customMap(Collections.singletonMap("projectName", "演示代码生成"))
                )
                // 模板引擎(可选)
                .templateEngine(new VelocityTemplateEngine())
                // 执行
                .execute();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PG_强哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值