CodeGenerator.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package com.supplychain;
  2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  3. import com.baomidou.mybatisplus.generator.AutoGenerator;
  4. import com.baomidou.mybatisplus.generator.config.*;
  5. import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
  6. import com.baomidou.mybatisplus.generator.config.rules.DateType;
  7. import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
  8. import java.util.Collections;
  9. import java.util.List;
  10. /**
  11. * 代码生成工具类
  12. */
  13. public class CodeGenerator {
  14. /**
  15. * 数据库链接地址
  16. */
  17. private static final String URL = "jdbc:mysql://47.109.193.147:3306/basic_library?socketTimeout=60000&connectTimeout=30000&serverTimeZone=UTC&useUnicode=true&characterEncoding=UTF-8";
  18. // private static final String URL = "jdbc:mysql://47.109.64.210:3306/intelligence?socketTimeout=60000&connectTimeout=30000&serverTimeZone=UTC&useUnicode=true&characterEncoding=UTF-8";
  19. /**
  20. * 用户名
  21. */
  22. private static final String USERNAME = "dms_root";
  23. //private static final String USERNAME = "root";
  24. /**
  25. * 密码
  26. */
  27. private static final String PASSWORD = "CsYr&Test159";
  28. // private static final String PASSWORD = "yr159";
  29. /**
  30. * 作者
  31. */
  32. private static final String AUTHOR = "";
  33. /**
  34. * 表名的前缀,从表生成代码时会去掉前缀
  35. */
  36. private static final String TABLE_PREFIX = "yr";
  37. /**
  38. * 包 名
  39. */
  40. private static final String PACKAGE_NAME = "com.yr.warehouse.admin.";
  41. /**
  42. * 模块名
  43. */
  44. private static final String PACKAGE_BUSINESS = "driver";
  45. /**
  46. * 需要生成的表名,必填
  47. */
  48. private static final List<String> TABLES = List.of(
  49. "yr_driver_goods_loss_record",
  50. "yr_driver_equipment_loss_record",
  51. "yr_driver_on_route_detail_log",
  52. "yr_driver_goods_loss_interval_main",
  53. "yr_driver_goods_loss_interval_detail",
  54. "yr_equipment_loss_interval_detail",
  55. "yr_driver_on_route_account_record_main",
  56. "yr_driver_on_route_account_record_detail"
  57. );
  58. public static void main(String[] args) {
  59. if (TABLES.isEmpty()) {
  60. System.out.println("请输入需要生成的表名!");
  61. return;
  62. }
  63. String projectPath = System.getProperty("user.dir");
  64. //全局配置
  65. GlobalConfig config = new GlobalConfig.Builder()
  66. .author(AUTHOR) //作者
  67. .outputDir(projectPath + "/warehouse-admin-data/src/main/java/") //生成文件输出路径(写到java目录)
  68. //.enableSwagger() //开启swagger
  69. .commentDate("yyyy-MM-dd HH:mm:ss") //注释日期格式
  70. .dateType(DateType.TIME_PACK) //设置时间对应类型
  71. .disableOpenDir() //生成后不要打开目录
  72. .build();
  73. //包名配置
  74. PackageConfig packageConfig = new PackageConfig.Builder()
  75. .parent(PACKAGE_NAME + PACKAGE_BUSINESS) //父包名
  76. //.moduleName(moduleName) //模块名
  77. //.controller("controller") //controller包名
  78. //.service("service.sys") //service接口包名
  79. .service("service")
  80. .serviceImpl("service.impl") //service实现类包名
  81. .entity("data") //实体类包名
  82. .mapper("mapper") //mapper包名
  83. .xml("mapper") //mapper对应的xml包名
  84. .pathInfo(Collections.singletonMap(OutputFile.mapper.xml, projectPath + "/warehouse-admin-data/src/main/resources/mapper/" + PACKAGE_BUSINESS)) //mapper对应的xml路径
  85. .build();
  86. //策略配置
  87. StrategyConfig strategyConfig = new StrategyConfig.Builder()
  88. .addTablePrefix(TABLE_PREFIX) //需要抵消的表前缀
  89. .addInclude(TABLES) //设置生成需要映射的表名
  90. //.enableCapitalMode() //策略开启⼤写命名
  91. .serviceBuilder() //构建Service层
  92. .formatServiceFileName("%sService")
  93. .enableFileOverride() //覆盖文件(需谨慎使用)
  94. .formatServiceImplFileName("%sServiceImpl") //业务层接口实现类命名
  95. // .superServiceImplClass(BaseService.class) //service公共父类
  96. .entityBuilder() //构建实体类
  97. .enableFileOverride() //覆盖文件(需谨慎使用)
  98. .formatFileName("%s")
  99. // .superClass(BaseEntity.class) //entity公共父类
  100. .columnNaming(NamingStrategy.underline_to_camel) //字段名驼峰命名
  101. .naming(NamingStrategy.underline_to_camel) //表名驼峰命名
  102. .enableLombok() //添加lombock的getter、setter注解
  103. //.enableChainModel() //启动链式写法@Accessors(chain = true)
  104. //.enableColumnConstant() //启动属性转常量功能@FieldNameConstants
  105. //.logicDeleteColumnName("deleted") //逻辑删除字段,标记@TableLogic
  106. .enableTableFieldAnnotation() //启动字段注解
  107. //.addTableFills(tableFillList) //属性值填充策略
  108. //.controllerBuilder() //构建Controller类
  109. //.enableFileOverride() //覆盖文件(需谨慎使用)
  110. //.enableHyphenStyle() //映射路径使用连字符格式,而不是驼峰
  111. //.formatFileName("%sController") //Controller类命名
  112. // .superClass(BaseController.class) //Controller 类继承 BaseController
  113. //.enableRestStyle() //标记@RestController注解
  114. .mapperBuilder() //构建mapper接口类
  115. //.enableFileOverride() //覆盖文件(需谨慎使用)
  116. .enableBaseResultMap() //生成基本的resultMap
  117. .formatMapperFileName("%sMapper") //Mapper接口类明名
  118. .superClass(BaseMapper.class) //Mapper接口类集成 BaseMapper
  119. //.enableMapperAnnotation() //标记@Mapper注解
  120. .formatXmlFileName("%sMapper") //Mapper.xml命名
  121. .enableBaseColumnList() //生成基本的SQL片段
  122. .build();
  123. //数据源配置
  124. DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig.Builder(URL, USERNAME, PASSWORD);
  125. //数据库类型转换器
  126. dataSourceConfigBuilder.typeConvert(new MySqlTypeConvert() {
  127. /*@Override
  128. public IColumnType processTypeConvert(GlobalConfig globalConfig, String tableField) {
  129. if (tableField.toLowerCase().contains("date") || tableField.toLowerCase().contains("timestamp") || tableField.toLowerCase().contains("datetime")) {
  130. return DbColumnType.STRING;
  131. }
  132. return super.processTypeConvert(globalConfig, tableField);
  133. }*/
  134. });
  135. //创建代码生成器对象,加载配置
  136. AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfigBuilder.build());
  137. autoGenerator.global(config);
  138. autoGenerator.packageInfo(packageConfig);
  139. autoGenerator.strategy(strategyConfig);
  140. //执行
  141. autoGenerator.execute();
  142. System.out.println("======================================== 相关代码生成完毕 =====================================");
  143. }
  144. }