public class CodeGenerator {
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotBlank(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
AutoGenerator generator = new AutoGenerator();
// 全局变量配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir"); //当前项目根路径
String outputDirPath = projectPath+"\service-core\src\main\java";
gc.setOutputDir(outputDirPath); // 输出路径
gc.setFileOverride(true); // 默认 false ,是否覆盖已生成文件
gc.setOpen(false); //默认true ,是否打开输出目录
gc.setEnableCache(false); // 默认false,是否开启二级缓存
gc.setAuthor("zhujiankang"); // 作者
gc.setSwagger2(false); //默认false
gc.setBaseResultMap(true); // 默认false
gc.setDateType(DateType.TIME_PACK); // 时间策略 默认TIME_PACK
gc.setBaseColumnList(true); //默认false 和basemodel相似
gc.setEntityName("%s");
gc.setControllerName("%sController");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
gc.setIdType(IdType.AUTO); // 指定生成的主键类型
generator.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dc = new DataSourceConfig();
// dc.setDbQuery(new MySqlQuery()); // 数据库信息查询 //默认mysql
// dc.setDbType(DbType.MYSQL);// 数据库类型
// dc.setTypeConvert(new MySqlTypeConvert()); //类型转换 默认mysql
dc.setUrl("jdbc:mysql://localhost:3306/srb_core?serverTimezone=GMT%2B8&characterEncoding=utf-8");
dc.setDriverName("com.mysql.cj.jdbc.Driver");
dc.setUsername("root");
dc.setPassword("123456");
generator.setDataSource(dc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.atguigu.srb.core");//代码生成到哪个包下面
//pc.setModuleName("com-generator"); //此处是所属模块名称
// pc.setEntity("entity"); //默认entity,controller,service,service.impl,mapper,mapper.xml
generator.setPackageInfo(pc);
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
String templatePath = "/templates/mapper.xml.ftl"; // Freemarker模板
// 自定义输出配置
List focList = new ArrayList<>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return outputDirPath + "\com\atguigu\srb\core\mapper\xml\" +
tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
generator.setCfg(cfg);
// 配置模板
TemplateConfig tc = new TemplateConfig();
// templates/entity.java 模板路径配置,默认在templates目录下,.vm 后缀不用加
//tc.setEntity("templates/entity.java");//使用自定义模板生成实体类
tc.setXml("");
generator.setTemplate(tc);
// 数据库表配置
StrategyConfig sc = new StrategyConfig();
sc.setCapitalMode(false); //是否大写命名 默认false
sc.setSkipView(true); //是否跳过试图 默认false
sc.setNaming(NamingStrategy.underline_to_camel);// 表映射 驼峰命名
sc.setColumnNaming(NamingStrategy.underline_to_camel); // 字段映射 驼峰
sc.setEntityLombokModel(false); //是否使用lombak 默认为false
sc.setRestControllerStyle(true); // 默认false
sc.setEntitySerialVersionUID(true); //默认true
sc.setEntityColumnConstant(true); //默认false 将mysql字段名生成静态变量
sc.setInclude(scanner("表名,多个英文逗号分割").split(",")); //表名,用,隔开 需要生产
// sc.setExclude(""); // 不需要生成 二选一
sc.setEntityTableFieldAnnotationEnable(true); // 默认false 注释
sc.setControllerMappingHyphenStyle(false); //默认false
//sc.setLogicDeleteFieldName("status"); // 逻辑删除字段名称
generator.setStrategy(sc);
// 模板引擎
//generator.setTemplateEngine(new VelocityTemplateEngine());
generator.setTemplateEngine(new FreemarkerTemplateEngine());
generator.execute();
}
}
上面的是代码 ,下面粘贴需要的依赖包
com.baomidou mybatis-plus-generatororg.springframework.boot spring-boot-starter-freemarker
下面粘贴一下运行结果
请输入表名,多个英文逗号分割: test 13:50:02.273 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================准备生成文件...========================== 13:50:04.486 [main] DEBUG com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine - 创建目录: [D:jrbbackendjrb-backendsrbservice-coresrcmainjavacomatguigusrbcoreentity] 13:50:04.788 [main] DEBUG com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine - 模板:/templates/mapper.xml.ftl; 文件:D:jrbbackendjrb-backendsrbservice-coresrcmainjavacomatguigusrbcoremapperxmlTestMapper.xml 13:50:05.082 [main] DEBUG com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine - 模板:/templates/entity.java.ftl; 文件:D:jrbbackendjrb-backendsrbservice-coresrcmainjavacomatguigusrbcoreentityTest.java 13:50:05.089 [main] DEBUG com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine - 模板:/templates/mapper.java.ftl; 文件:D:jrbbackendjrb-backendsrbservice-coresrcmainjavacomatguigusrbcoremapperTestMapper.java 13:50:05.094 [main] DEBUG com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine - 模板:/templates/service.java.ftl; 文件:D:jrbbackendjrb-backendsrbservice-coresrcmainjavacomatguigusrbcoreserviceTestService.java 13:50:05.099 [main] DEBUG com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine - 模板:/templates/serviceImpl.java.ftl; 文件:D:jrbbackendjrb-backendsrbservice-coresrcmainjavacomatguigusrbcoreserviceimplTestServiceImpl.java 13:50:05.105 [main] DEBUG com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine - 模板:/templates/controller.java.ftl; 文件:D:jrbbackendjrb-backendsrbservice-coresrcmainjavacomatguigusrbcorecontrollerTestController.java 13:50:05.107 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================文件生成完成!!!========================== Process finished with exit code 0
更详细的知识点请点击官方网站查询自动化配置
以上就是我学习codeGenerator的总结,希望对新学者有帮助。



