MyBatis-Plus逆向工程代码生成工具类

大家好,我是小白学Java。

最近在工作中遇到一个功能,涉及到的表有点多,不想写实体类和xml了,想用以下MyBatis-Plus的逆向工程生成代码,于是在网上找了一下相关的文章也看了一下源码,然后把自己学习和使用做一下记录,实测生效,生成代码绝对够用。

声明:由于这篇文章是我后写的,学习过程我查看了网上相关的帖子,但是当时没记录文章地址,这里就不贴了,在这儿我也要感谢网上的大佬们!

一、准备工作:引入依赖

        引入mybatis-plus、mybatis-plus-generator、velocity-engine相关的依赖

        <!--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-generate</artifactId>
            <version>2.3.3</version>
        </dependency>
        <!--mp逆向工程需要使用的模板-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>

二、编写工具类

        编写工具类的大概步骤七步:

  1.  创建代码生成器
  2. 配置数据库连接
  3. 设置全局配置信息
  4. 设置包名相关信息
  5. 设置不需要生成的逻辑层
  6. 设置策略
  7. 执行代码生成器

下面是代码生成器代码,其中包括一些细节记录,对于大部属功能来说应该都够用了,其中还有可优化的地方,比如获取控制台录入信息和模板配置等在这里没有体现

package com.wjs_007.study.generator;

import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class CodeGenerator {
    public static void main(String[] args) {
        //1、创建代码生成器
        AutoGenerator autoGenerator = new AutoGenerator();

        //2、配置数据库连接信息
        DataSourceConfig dataSource = new DataSourceConfig();
        dataSource.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/study_db?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8");
        dataSource.setUsername("username");
        dataSource.setPassword("password");

        //给代码生成器设置数据库连接
        autoGenerator.setDataSource(dataSource);

        //3、设置全局配置信息
        GlobalConfig globalConfig = new GlobalConfig();
        System.out.println(System.getProperty("user.dir"));
        //设置代码生成后输出的位置
        globalConfig.setOutputDir(System.getProperty("user.dir") + "\\myModuleName\\src\\main\\java");
        //设置生成完毕后是否打开生成代码所在的目录
        globalConfig.setOpen(false);
        //设置作者
        globalConfig.setAuthor("wjs_007");
        //设置是否覆盖原始生成的文件
        globalConfig.setFileOverride(false);
        //设置生成数据层接口名称,%s为占位符,指代模块名称
        globalConfig.setMapperName("%sMapper");
        globalConfig.setXmlName("%sMapper");
        //在xml中生成整表对应的resultMap
        globalConfig.setBaseResultMap(true);
        //在xml中生成整表的字段列表
        globalConfig.setBaseColumnList(true);
        //设置生成服务层接口名称
        globalConfig.setServiceName("I%sService");
        //设置生成服务层实现类的名称
        globalConfig.setServiceImplName("%sServiceImpl");
        globalConfig.setControllerName("%sController");
        //设置Id生成策略,此处我使用的是自增,也可以使用其他的,在IdType中有可选项
        globalConfig.setIdType(IdType.AUTO);

        //给代码生成器设置全局配置信息
        autoGenerator.setGlobalConfig(globalConfig);


        //4、设置包名相关的配置信息
        PackageConfig packageConfig = new PackageConfig();
        //输出目标基包路径,就是src/main/java下面的域名反写,如果不设置默认是com.baomidou
        packageConfig.setParent("com.wjs_007.study");
        //功能模块的包名,比如模板管理的代码写在com.wjs_007.study.template下,此处需要写template
        packageConfig.setModuleName("gtest");
        packageConfig.setController("controller");
        packageConfig.setEntity("entity");
        packageConfig.setService("service");
        packageConfig.setServiceImpl("service.impl");//service接口的实现类放置位置,我放在service下的impl下
        packageConfig.setMapper("mapper");
        packageConfig.setXml("mapper");//此处我把mapper接口和xml文件都放在mapper包下了

        //给代码生成器设置包的相关配置
        autoGenerator.setPackageInfo(packageConfig);

        //5、设置不生成的业务层,此处设置不生成controller。此处可以省略,如果有需要就写
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setController(null);

        //给代码生成器设置模板
        autoGenerator.setTemplate(templateConfig);

        //6、设置策略
        StrategyConfig strategyConfig = new StrategyConfig();
        //数据库表名映射到实体的命名策略:下划线转驼峰
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        //数据库表字段映射到实体类的命名策略:下划线转驼峰
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        //实体类使用lombok注解
        strategyConfig.setEntityLombokModel(true);
        //实体类字段是否添加注解
        strategyConfig.entityTableFieldAnnotationEnable(false);
        //添加Rest风格注解
        strategyConfig.setRestControllerStyle(true);
        //在Controller上的RequestMapping请求路径设置,true表示使用中划线连接,false表示使用驼峰
        strategyConfig.setControllerMappingHyphenStyle(false);
        //目标表
        strategyConfig.setInclude("sys_role","sys_user");

        //给代码生成器设置策略
        autoGenerator.setStrategy(strategyConfig);



        //7、执行逆向工程操作
        autoGenerator.execute();




    }
}

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值