1.交互生成
package com.company.codeGen;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.io.InputStream;
import java.util.*;
// 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
public class CodeGenerator {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/codegen","root","123456")
/*全局配置(GlobalConfig)*/
.globalConfig((scanner, builder) -> {
builder.author("zh_xiao") //作者
.outputDir(System.getProperty("user.dir")+"\\src\\main\\java") //输出路径(写到java目录)
.enableSwagger() //开启swagger
.commentDate("yyyy-MM-dd") //注释日期
.fileOverride(); //开启覆盖之前生成的文件
})
/*包配置(PackageConfig)*/
.packageConfig((scanner, builder) -> {
builder.parent("com.company.projectname") //父包名
.moduleName("modules") //父包模块名
.entity("entity") //Entity 包名
.service("service") //Service 包名
.serviceImpl("service.impl") //Service Impl 包名
.controller("controller") //Controller 包名
.mapper("mapper") //Mapper 包名
.xml("mapper.xml") //Mapper XML 包名
//路径配置信息Collections.singletonMap(OutputFile.mapperXml, "D://")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml,System.getProperty("user.dir")+"\\src\\main\\resources\\mappers"));
})
//策略配置(StrategyConfig)
.strategyConfig((scanner, builder) -> {
builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all"))) //增加表匹配(内存过滤)
.serviceBuilder() //service 策略配置
.formatServiceFileName("%sService") //
.formatServiceImplFileName("%sServiceImpl")
.entityBuilder() //实体策略配置
.enableLombok()
.logicDeleteColumnName("deleted")
.enableTableFieldAnnotation()
.controllerBuilder() //controller 策略配置
.formatFileName("%sController")
.enableRestStyle()
.mapperBuilder() //mapper 策略配置
.enableBaseResultMap() //生成通用的resultMap
.superClass(BaseMapper.class)
.formatMapperFileName("%sMapper")
.enableMapperAnnotation()
.formatXmlFileName("%sMapper");
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
// 处理 all 情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}