# CodeGenerator **Repository Path**: lideidi/code-generator ## Basic Information - **Project Name**: CodeGenerator - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-16 - **Last Updated**: 2021-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README package com.fajiajia.useApi.generator; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; import com.baomidou.mybatisplus.generator.config.po.TableFill; import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.DateType; import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; import com.baomidou.mybatisplus.generator.config.rules.IColumnType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 运行此方法生成mybatis代码 * 生成代码自动放入对应目录 * @author tj * @create 2020/11/16 */ public class CodeGenerator { public static void main(String[] args) { String projectPath = System.getProperty("user.dir"); // 自定义需要填充的字段 List tableFillList = new ArrayList(); //如 每张表都有一个创建时间、修改时间 //而且这基本上就是通用的了,新增时,创建时间和修改时间同时修改 //修改时,修改时间会修改, //虽然像Mysql数据库有自动更新几只,但像ORACLE的数据库就没有了, //使用公共字段填充功能,就可以实现,自动按场景更新了。 //如下是配置 // TableFill sysCreateTime = new TableFill("create_time", FieldFill.INSERT); // TableFill sysUpdateTime = new TableFill("update_time", FieldFill.UPDATE); // TableFill sysCreateBy = new TableFill("create_by", FieldFill.INSERT); // TableFill sysUpdateBy = new TableFill("update_by", FieldFill.UPDATE); // tableFillList.add(sysCreateTime); // tableFillList.add(sysUpdateTime); // tableFillList.add(sysCreateBy); // tableFillList.add(sysUpdateBy); // 1. 全局配置 GlobalConfig config = new GlobalConfig(); // 是否支持AR模式 config .setActiveRecord(true) // 作者 .setAuthor("tj") // 生成路径 .setOutputDir(projectPath + "/src/main/java/") //生成swagger2 // .setSwagger2(true) // 文件覆盖 .setFileOverride(true) // 主键策略 .setIdType(IdType.AUTO) // 设置生成的service接口的名字的首字母是否为I,例如IEmployeeService .setServiceName("%sService") //生成基本的resultMap .setBaseResultMap(true) //生成基本的SQL片段 .setBaseColumnList(true) //生成后打开文件夹 .setOpen(false).setDateType(DateType.ONLY_DATE); // 2. 数据源配置 DataSourceConfig dsConfig = new DataSourceConfig(); // 设置数据库类型 dsConfig.setDbType(DbType.MYSQL) .setDriverName("com.mysql.cj.jdbc.Driver") .setUrl("jdbc:mysql://127.0.0.1:3306/blockchain?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true") .setUsername("root") .setPassword("123456") .setTypeConvert(new MySqlTypeConvert() { // 自定义数据库表字段类型转换【可选】 @Override public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) { System.out.println("转换类型:" + fieldType); if (fieldType.toLowerCase().contains("tinyint")) { return DbColumnType.INTEGER; } return super.processTypeConvert(globalConfig, fieldType); } }); // 3. 策略配置globalConfiguration中 StrategyConfig stConfig = new StrategyConfig(); // 全局大写命名 stConfig.setCapitalMode(true) // 指定表名 字段名是否使用下划线 //.setDbColumnUnderline(true) // 数据库表映射到实体的命名策略 .setColumnNaming(NamingStrategy.underline_to_camel) .setNaming(NamingStrategy.underline_to_camel) // 逻辑删除字段名称 .setLogicDeleteFieldName("valid") .setTablePrefix("t_") // 生成的表 .setInclude(new String[] { "t_user" }) // 是否生成字段注解 .setEntityTableFieldAnnotationEnable(true) // lombok .setEntityLombokModel(true) // .setColumnNaming() // 自定义实体,公共字段 .setTableFillList(tableFillList); // 4. 包名策略配置 PackageConfig pkConfig = new PackageConfig(); pkConfig.setParent("com.fajiajia.useApi") //dao .setMapper("mapper") //servcie .setService("service") .setServiceImpl("service.impl") //controller .setController("web") .setEntity("model") //mapper.xml .setXml("mappers"); // 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { Map map = new HashMap<>(); map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp"); this.setMap(map); } }; // 自定义输出文件目录 List focList = new ArrayList<>(); // 调整xml生成目录演示 focList.add(new FileOutConfig("/templates/mapper.xml.vm") { @Override public String outputFile(TableInfo tableInfo) { return projectPath + "/src/main/resources/mappers/" + tableInfo.getEntityName() + "Mapper.xml"; } }); cfg.setFileOutConfigList(focList); // 关闭默认生成,如果设置空 OR Null 将不生成该模块。 TemplateConfig tc = new TemplateConfig(); tc.setController(null); tc.setXml(null); tc.setMapper("templates/mapper.java"); // 5. 整合配置 AutoGenerator ag = new AutoGenerator(); ag.setGlobalConfig(config) .setDataSource(dsConfig) .setStrategy(stConfig) .setPackageInfo(pkConfig) .setCfg(cfg) .setTemplate(tc); // 6. 执行 ag.execute(); } }