自用Mybatis-plus代码生成备份

pom.xml

  <dependencies>
      <!--web依赖-->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <!--junit测试-->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <version>2.3.4.RELEASE</version>
          <scope>test</scope>
      </dependency>

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

      <!--代码生成模式插件  3.0.3以后需要手动设置依赖-->
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-generator</artifactId>
          <version>3.3.1.tmp</version>
      </dependency>

      <!--代码生成模板-->
      <dependency>
          <groupId>org.apache.velocity</groupId>
          <artifactId>velocity-engine-core</artifactId>
          <version>2.2</version>
      </dependency>

      <!--简化代码插件-->
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <optional>true</optional>
      </dependency>

      <!--mysql驱动-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.18</version>
      </dependency>

      <!-- druid阿里巴巴数据库连接池 -->
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.1.6</version>
      </dependency>

      <!-- 热部署 -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
          <optional>true</optional>
      </dependency>

      <!--swagger2-->
      <dependency>
          <groupId>com.spring4all</groupId>
          <artifactId>spring-boot-starter-swagger</artifactId>
          <version>1.5.1.RELEASE</version>
      </dependency>
  </dependencies>

 

生成工具

package com.fordring.util;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.lang.reflect.Field;
import java.util.*;

/**
 * author:Fordring
 * Date:  2020/4/5 9:14
 */
public class CodeGenerationUtils {

    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();

        //=============================配置文件,使用修改1========================
        //用来获取Mybatis-Plus.properties文件的配置信息 :
        ResourceBundle rb = ResourceBundle.getBundle("code-generate"); //不要加后缀
        //=============================配置文件,使用修改1========================

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir(rb.getString("OutputDir"));
        gc.setFileOverride(false);
        gc.setActiveRecord(true);// 开启 activeRecord 模式
        gc.setEnableCache(false);// XML 二级缓存
        gc.setBaseResultMap(true);// XML ResultMap
        gc.setBaseColumnList(false);// XML columList
        gc.setServiceName("%sService");   //去掉service的I前缀,一般只需要设置service就行
        //生成代码后,是否打开文件夹
        gc.setOpen(false);
        gc.setFileOverride(false);  //是否覆盖原来代码,个人建议设置为false,别覆盖,危险系数太高
        gc.setAuthor(rb.getString("author"));
        mpg.setGlobalConfig(gc);
/*        gc.setMapperName("%sMapper");
        gc.setXmlName("%sMapper");
        gc.setServiceImplName("%sServiceImpl");
        gc.setControllerName("%sController");*/

        gc.setDateType(DateType.ONLY_DATE);   //日期格式
        gc.setSwagger2(true);       // 实体属性 Swagger2 注解,实体类上会增加注释
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);
        dsc.setTypeConvert(new MySqlTypeConvert());
        dsc.setDriverName(rb.getString("jdbc.driver"));
        dsc.setUsername(rb.getString("jdbc.user"));
        dsc.setPassword(rb.getString("jdbc.pwd"));
        dsc.setUrl(rb.getString("jdbc.url"));
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent(rb.getString("parent"));   //自定义包的路径
        //pc.setModuleName("module");   //模块名称  设置后,会生成com.cxyxs.test.module,里面存放之前设置的mapper,entity
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setController("controller");
        mpg.setPackageInfo(pc);


        //=============================配置文件,使用修改2========================
        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        // 此处可以修改为您的表前缀,生成实体类等忽略前缀
        strategy.setTablePrefix(new String[]{"t_"});
        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
        //设置映射的表名,可以设置多个表
        strategy.setInclude("t_new");
        //=============================配置文件,使用修改2========================

        //包的命名规则,使用驼峰规则
        strategy.setNaming(NamingStrategy.underline_to_camel);
        //列的名称,使用驼峰规则
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        //是否使用lombok
        strategy.setEntityLombokModel(true);
        //驼峰命名
        strategy.setRestControllerStyle(true);
        strategy.setLogicDeleteFieldName("is_delete");   //逻辑删除,假删除会用到

        mpg.setStrategy(strategy);

        customPackagePath(pc, mpg, rb);

        // 执行生成
        mpg.execute();  //执行
    }

    public static void customPackagePath(PackageConfig pc, AutoGenerator mpg, ResourceBundle rb) throws NoSuchFieldException, IllegalAccessException {
        /*
         * packageInfo配置controller、service、serviceImpl、entity、mapper等文件的包路径
         * 这里包路径可以根据实际情况灵活配置
         */
        Map<String, String> packageInfo = new HashMap<>();
        packageInfo.put(ConstVal.CONTROLLER, rb.getString("parent") + ".controller");
        packageInfo.put(ConstVal.SERVICE, rb.getString("parent") + ".service");
        packageInfo.put(ConstVal.SERVICE_IMPL, rb.getString("parent") + ".service.impl");
        packageInfo.put(ConstVal.ENTITY, rb.getString("parent") + ".entity");
        packageInfo.put(ConstVal.MAPPER, rb.getString("parent") + ".mapper");

        /*
         * pathInfo配置controller、service、serviceImpl、entity、mapper、mapper.xml等文件的生成路径
         * srcPath也可以更具实际情况灵活配置
         * 后面部分的路径是和上面packageInfo包路径对应的源码文件夹路径
         * 这里你可以选择注释其中某些路径,可忽略生成该类型的文件,例如:注释掉下面pathInfo中Controller的路径,就不会生成Controller文件
         */
        Map<String,String> pathInfo = new HashMap<>();
        pathInfo.put(ConstVal.CONTROLLER_PATH, rb.getString("OutputDir") + "/" + packageInfo.get(ConstVal.CONTROLLER).replaceAll("\\.","/"));
        pathInfo.put(ConstVal.SERVICE_PATH, rb.getString("OutputDir") + "/"+ packageInfo.get(ConstVal.SERVICE).replaceAll("\\.","/"));
        pathInfo.put(ConstVal.SERVICE_IMPL_PATH, rb.getString("OutputDir") + "/"+  packageInfo.get(ConstVal.SERVICE_IMPL).replaceAll("\\.","/"));
        pathInfo.put(ConstVal.ENTITY_PATH, rb.getString("OutputDir") + "/" + packageInfo.get(ConstVal.ENTITY).replaceAll("\\.","/"));
        pathInfo.put(ConstVal.MAPPER_PATH, rb.getString("OutputDir") + "/" + packageInfo.get(ConstVal.MAPPER).replaceAll("\\.","/"));
        pathInfo.put(ConstVal.XML_PATH, rb.getString("OutputDirXml") + "/" + packageInfo.get(ConstVal.MAPPER).replaceAll("\\.","/"));
        pc.setPathInfo(pathInfo);

        /*
         * 创建configBuilder对象,传入必要的参数
         * 将以上的定义的包路径packageInfo配置到赋值到configBuilder对象的packageInfo属性上
         * 因为packageInfo是私有成员变量,也没有提交提供公共的方法,所以使用反射注入
         * 为啥要这么干,看源码去吧
         */
        ConfigBuilder configBuilder = new ConfigBuilder(mpg.getPackageInfo(), mpg.getDataSource(), mpg.getStrategy(), mpg.getTemplate(), mpg.getGlobalConfig());
        Field packageInfoField = configBuilder.getClass().getDeclaredField("packageInfo");
        packageInfoField.setAccessible(true);
        packageInfoField.set(configBuilder, packageInfo);

        /*
         * 设置配置对象
         */
        mpg.setConfig(configBuilder);
    }
}

 

生成工具使用的配置文件

#实体类及controller输出路径
OutputDir=/Users/fordring/Desktop/ideaprojects/demo/code-generate/src/main/java

#mapper.xml文件输出路径
OutputDirXml=/Users/fordring/Desktop/ideaprojects/demo/code-generate/src/main/resources

#作者
author=Fordring

#公共包名
parent=com.fordring.generate

#对应数据库
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///fordring
jdbc.user=root
jdbc.pwd=123456



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值