Mybatis Plus代码生成code

mybatis plus代码生成配置,注意点如下:

  1. 详细文档参考文档
  2. 这里的代码只写了日常使用到的,例如模板等一些都没有配置,参考文档可以自行配置
  3. 如果只针对部分表生成,可以使用如下代码,也可以修改策略配置即可
  4. 最终的生成格式等,自行执行一下看看即可,不合适的地方对应自行调整
  5. 本文章仅仅作为个人记录,以防后面用到,同时分享出来给大家参考,代码是参考文档写的
package demo.jiangkd.mybatis.generator;

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.*;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import demo.jiangkd.mybatis.MybatisPlusApplication;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Mapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Collections;
import java.util.function.Consumer;

/**
 * 代码生成器
 *
 * @author jiangkd
 * @date 2024/1/16 14:06:59
 */
@SpringBootTest(classes = MybatisPlusApplication.class)
@RunWith(SpringRunner.class)
@Slf4j
public class CodeGeneratorTest {

    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    /**
     * MP-代码生成器配置新
     * https://baomidou.com/pages/981406/#%E6%95%B0%E6%8D%AE%E5%BA%93%E9%85%8D%E7%BD%AE-datasourceconfig
     */
    @Test
    public void testGenerator() {

        /*
        数据库配置
         */
        final DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig.Builder(url, username, password);

        /*
        代码生成器, 同时注入数据库配置
         */
        FastAutoGenerator fastAutoGenerator = FastAutoGenerator.create(dataSourceConfigBuilder);

        /*
        1,全局配置(GlobalConfig)
         */
        fastAutoGenerator = fastAutoGenerator.globalConfig(this.globalConfig());

        /*
        2,包配置(PackageConfig)
         */
        fastAutoGenerator = fastAutoGenerator.packageConfig(this.packageConfig());

        /*
        3,模板配置(TemplateConfig)
         */
        fastAutoGenerator = fastAutoGenerator.templateConfig(this.templateConfig());

        /*
        4,注入配置(InjectionConfig)
         */
        fastAutoGenerator = fastAutoGenerator.injectionConfig(this.injectionConfig());

        /*
        5,策略配置(StrategyConfig)
         */
        fastAutoGenerator = fastAutoGenerator.strategyConfig(this.strategyConfig());

        // 执行输出
        fastAutoGenerator.execute();

    }

    /**
     * 策略配置(StrategyConfig)
     */
    private Consumer<StrategyConfig.Builder> strategyConfig() {

        return strategyConfigBuilder -> strategyConfigBuilder
                // 模糊表匹配(sql 过滤), likeTable 与 notLikeTable 只能配置一项
                // 模糊表排除(sql 过滤), likeTable 与 notLikeTable 只能配置一项
                // 增加表匹配(内存过滤), include 与 exclude 只能配置一项 ,支持正则匹配、例如 ^t_.* 所有 t_ 开头的表名
                .addInclude("表1", "表2")
                // 增加表排除匹配(内存过滤), include 与 exclude 只能配置一项 ,支持正则匹配、例如 .*st$ 所有 st 结尾的表名
                // 增加过滤表前缀
                // 增加过滤表后缀
                // 增加过滤字段前缀
                // 增加过滤字段后缀
                /*
                 实体策略配置
                 */
                .entityBuilder()
                // 覆盖已生成文件
                .enableFileOverride()
                // 开启链式模型
                .enableChainModel()
                // 开启 lombok 模型
                .enableLombok()
                // 开启 Boolean 类型字段移除 is 前缀
                .enableRemoveIsPrefix()
                // 开启生成实体时生成字段注解
                .enableTableFieldAnnotation()
                // 开启 ActiveRecord 模型
                .enableActiveRecord()
                // 逻辑删除 以及 乐观所等
                // 数据库表映射到实体的命名策略
                .naming(NamingStrategy.underline_to_camel)
                // 数据库表字段映射到实体的命名策略, 默认为 null,未指定按照 naming 执行
                // 全局主键类型
                .idType(IdType.AUTO)
                // 格式化文件名称
                .formatFileName("%sEntity")
                /*
                 controller策略配置
                 */
                .controllerBuilder()
                // 覆盖已生成文件
                .enableFileOverride()
                // enableHyphenStyle, 开启驼峰转连字符, 默认值 false
                // 开启生成@RestController 控制器
                .enableRestStyle()
                //
                /*
                 service策略配置
                 */
                .serviceBuilder()
                // 设置service接口父类
                .superServiceClass(IService.class)
                // 设置 service 实现类父类
                .superServiceImplClass(ServiceImpl.class)
                //  覆盖已生成文件
                .enableFileOverride()
                /*
                 mapper策略配置
                 */
                .mapperBuilder()
                // 设置父类
                .superClass(BaseMapper.class)
                // 覆盖生成的文件
                .enableFileOverride()
                // 开启@Mapper注解
                .mapperAnnotation(Mapper.class)
                .build();

    }

    /**
     * 注入配置(InjectionConfig)
     */
    private Consumer<InjectionConfig.Builder> injectionConfig() {

        return injectionConfigBuilder -> injectionConfigBuilder.build();

    }

    /**
     * 模板配置(TemplateConfig)
     */
    private Consumer<TemplateConfig.Builder> templateConfig() {

        return templateConfigBuilder -> templateConfigBuilder.build();

    }

    /**
     * 包配置(PackageConfig)
     */
    private Consumer<PackageConfig.Builder> packageConfig() {

        return packageConfigBuilder -> packageConfigBuilder
                // 父包名
                .parent("demo.jiangkd.mybatis.plus")
                // entity包名
                .entity("entity")
                // service包名
                .service("service")
                // service impl包名
                .serviceImpl("service.impl")
                // Mapper包名
                .mapper("mapper")
                // mapper xml包名
                .xml("mapper.xml")
                // controller包名
                .controller("controller")
                // 路径配置信息, 这里配置mapper xml的路径
                .pathInfo(Collections.singletonMap(OutputFile.xml, "D://mapperxml"));

    }

    /**
     * 全局配置(GlobalConfig)
     */
    private Consumer<GlobalConfig.Builder> globalConfig() {

        return globalConfigBuilder -> globalConfigBuilder
                // 指定输出目录
                .outputDir("D://")
                // 作者
                .author("jiangkd")
                // 时间策略
                .dateType(DateType.TIME_PACK)
                // 注释时间
                .commentDate("yyyy-MM-dd HH:mm:ss");

    }

}

相关推荐

  1. MybatisPlus自动生成代码

    2024-03-19 16:48:06       21 阅读
  2. Mybatis Plus代码生成code

    2024-03-19 16:48:06       21 阅读
  3. SpringBoot集成MybatisPlus实现代码生成

    2024-03-19 16:48:06       14 阅读
  4. 代码生成流程图Code Chart

    2024-03-19 16:48:06       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-19 16:48:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-19 16:48:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-19 16:48:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-19 16:48:06       20 阅读

热门阅读

  1. 关于服务器被入侵的个人日志(┬┬﹏┬┬)

    2024-03-19 16:48:06       22 阅读
  2. centos 7 添加启动脚本

    2024-03-19 16:48:06       18 阅读
  3. MySQL实战45讲

    2024-03-19 16:48:06       21 阅读
  4. 蓝桥杯算法基础(25)边长为1的最大子方阵优化

    2024-03-19 16:48:06       19 阅读
  5. 获取所有LOF基金实时行情数据

    2024-03-19 16:48:06       19 阅读
  6. Mysql 数据如何储存?

    2024-03-19 16:48:06       18 阅读
  7. Python使用Scapy库修改pcap包MAC地址

    2024-03-19 16:48:06       24 阅读
  8. P1266 速度限制(最短路 迪杰斯特拉算法)

    2024-03-19 16:48:06       19 阅读
  9. 自然语言处理概念及发展

    2024-03-19 16:48:06       23 阅读
  10. 8大伦理考量:大型语言模型(LLM)如GPT-4

    2024-03-19 16:48:06       20 阅读
  11. 深入理解词向量与句向量:NLP中的基础概念

    2024-03-19 16:48:06       22 阅读