Generator.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package com.alvin;
  2. import com.baomidou.mybatisplus.annotation.FieldFill;
  3. import com.baomidou.mybatisplus.generator.FastAutoGenerator;
  4. import com.baomidou.mybatisplus.generator.config.GlobalConfig;
  5. import com.baomidou.mybatisplus.generator.config.OutputFile;
  6. import com.baomidou.mybatisplus.generator.config.builder.Entity;
  7. import com.baomidou.mybatisplus.generator.config.rules.DateType;
  8. import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
  9. import com.baomidou.mybatisplus.generator.fill.Column;
  10. import java.util.Collections;
  11. public class Generator {
  12. public static void main(String[] args) {
  13. }
  14. /**
  15. * 生成文件
  16. *
  17. * @param db_url db url
  18. * @param db_username 数据库用户名
  19. * @param db_password 数据库密码
  20. * @param author 作者
  21. * @param javaDir java dir
  22. * @param parentPackage 父包
  23. * @param tableName 表名
  24. * @param tablePrefix 表前缀
  25. * @param controller 是否生成 controller
  26. * @param service 是否生成 service
  27. * @param serviceImpl 是否生成 serviceImpl
  28. */
  29. public static void generatorToFile(String db_url, String db_username, String db_password,
  30. String author, String javaDir, String parentPackage,
  31. String tableName, String tablePrefix, Boolean swagger,
  32. String logicDeleteField, String insertFields, String updateFields,
  33. Boolean controller, Boolean service, Boolean serviceImpl) {
  34. FastAutoGenerator generator = FastAutoGenerator.create(db_url, db_username, db_password);
  35. GlobalConfig.Builder builder1 = new GlobalConfig.Builder();
  36. //===全局配置
  37. generator.globalConfig(builder -> {
  38. builder.author(author) // 设置作者
  39. .dateType(DateType.ONLY_DATE) // 设置日期为 Date
  40. .fileOverride() // 覆盖已生成文件
  41. .outputDir(javaDir); // 指定输出目录
  42. if (swagger) {
  43. builder.enableSwagger();// 开启 swagger 模式
  44. }
  45. }
  46. );
  47. //===模块配置
  48. generator.packageConfig(builder -> {
  49. builder.parent(parentPackage) // 设置父包名
  50. .moduleName("") // 设置父包模块名
  51. .pathInfo(Collections.singletonMap(OutputFile.mapperXml, javaDir + "/../resources/mapper")); // 设置mapperXml生成路径
  52. })
  53. .strategyConfig(builder -> {
  54. //Controller
  55. builder.controllerBuilder().enableHyphenStyle() // 开启驼峰转连字符
  56. .enableRestStyle(); // 开启生成@RestController 控制器
  57. //mapper
  58. builder.mapperBuilder().enableMapperAnnotation().build();
  59. //实体类
  60. Entity.Builder builder2 = builder.entityBuilder().enableLombok();
  61. if (logicDeleteField != null && logicDeleteField.trim().length() > 0) {
  62. builder2.logicDeleteColumnName(logicDeleteField);
  63. }
  64. for (String s : insertFields.split(",")) {
  65. builder2.addTableFills(new Column(s.trim(), FieldFill.INSERT));
  66. }
  67. for (String s : updateFields.split(",")) {
  68. builder2.addTableFills(new Column(s.trim(), FieldFill.INSERT_UPDATE));
  69. }
  70. // 设置需要生成的表名
  71. for (String s : tableName.split(",")) {
  72. builder.addInclude(s.trim());
  73. }
  74. for (String s : tablePrefix.split(",")) {
  75. builder.addTablePrefix(s.trim());
  76. }
  77. })
  78. .templateEngine(new FreemarkerTemplateEngine())// 使用Freemarker引擎模板,默认的是Velocity引擎模板
  79. .templateConfig(builder -> builder.entity("templates/entity1.java"));
  80. if (!controller) {
  81. generator.templateConfig(builder -> builder.controller("")); // 设置为空则不会生成该文件
  82. } else {
  83. generator.templateConfig(builder -> builder.controller("templates/controller1.java"));
  84. }
  85. if (!service) {
  86. generator.templateConfig(builder -> builder.service(""));
  87. } else {
  88. generator.templateConfig(builder -> builder.service("templates/service1.java"));
  89. }
  90. if (!serviceImpl) {
  91. generator.templateConfig(builder -> builder.serviceImpl(""));
  92. } else {
  93. generator.templateConfig(builder -> builder.serviceImpl("templates/serviceImpl1.java"));
  94. }
  95. generator.execute();
  96. }
  97. }