CodeGenerator.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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_device_stock_snapshot"
  50. );
  51. public static void main(String[] args) {
  52. if (TABLES.isEmpty()) {
  53. System.out.println("请输入需要生成的表名!");
  54. return;
  55. }
  56. String projectPath = System.getProperty("user.dir");
  57. //全局配置
  58. GlobalConfig config = new GlobalConfig.Builder()
  59. .author(AUTHOR) //作者
  60. .outputDir(projectPath + "/warehouse-admin-data/src/main/java/") //生成文件输出路径(写到java目录)
  61. //.enableSwagger() //开启swagger
  62. .commentDate("yyyy-MM-dd HH:mm:ss") //注释日期格式
  63. .dateType(DateType.TIME_PACK) //设置时间对应类型
  64. .disableOpenDir() //生成后不要打开目录
  65. .build();
  66. //包名配置
  67. PackageConfig packageConfig = new PackageConfig.Builder()
  68. .parent(PACKAGE_NAME + PACKAGE_BUSINESS) //父包名
  69. //.moduleName(moduleName) //模块名
  70. //.controller("controller") //controller包名
  71. //.service("service.sys") //service接口包名
  72. .service("service")
  73. .serviceImpl("service.impl") //service实现类包名
  74. .entity("data") //实体类包名
  75. .mapper("mapper") //mapper包名
  76. .xml("mapper") //mapper对应的xml包名
  77. .pathInfo(Collections.singletonMap(OutputFile.mapper.xml, projectPath + "/warehouse-admin-data/src/main/resources/mapper/" + PACKAGE_BUSINESS)) //mapper对应的xml路径
  78. .build();
  79. //策略配置
  80. StrategyConfig strategyConfig = new StrategyConfig.Builder()
  81. .addTablePrefix(TABLE_PREFIX) //需要抵消的表前缀
  82. .addInclude(TABLES) //设置生成需要映射的表名
  83. //.enableCapitalMode() //策略开启⼤写命名
  84. .serviceBuilder() //构建Service层
  85. .formatServiceFileName("%sService")
  86. .enableFileOverride() //覆盖文件(需谨慎使用)
  87. .formatServiceImplFileName("%sServiceImpl") //业务层接口实现类命名
  88. // .superServiceImplClass(BaseService.class) //service公共父类
  89. .entityBuilder() //构建实体类
  90. .enableFileOverride() //覆盖文件(需谨慎使用)
  91. .formatFileName("%s")
  92. // .superClass(BaseEntity.class) //entity公共父类
  93. .columnNaming(NamingStrategy.underline_to_camel) //字段名驼峰命名
  94. .naming(NamingStrategy.underline_to_camel) //表名驼峰命名
  95. .enableLombok() //添加lombock的getter、setter注解
  96. //.enableChainModel() //启动链式写法@Accessors(chain = true)
  97. //.enableColumnConstant() //启动属性转常量功能@FieldNameConstants
  98. //.logicDeleteColumnName("deleted") //逻辑删除字段,标记@TableLogic
  99. .enableTableFieldAnnotation() //启动字段注解
  100. //.addTableFills(tableFillList) //属性值填充策略
  101. //.controllerBuilder() //构建Controller类
  102. //.enableFileOverride() //覆盖文件(需谨慎使用)
  103. //.enableHyphenStyle() //映射路径使用连字符格式,而不是驼峰
  104. //.formatFileName("%sController") //Controller类命名
  105. // .superClass(BaseController.class) //Controller 类继承 BaseController
  106. //.enableRestStyle() //标记@RestController注解
  107. .mapperBuilder() //构建mapper接口类
  108. //.enableFileOverride() //覆盖文件(需谨慎使用)
  109. .enableBaseResultMap() //生成基本的resultMap
  110. .formatMapperFileName("%sMapper") //Mapper接口类明名
  111. .superClass(BaseMapper.class) //Mapper接口类集成 BaseMapper
  112. //.enableMapperAnnotation() //标记@Mapper注解
  113. .formatXmlFileName("%sMapper") //Mapper.xml命名
  114. .enableBaseColumnList() //生成基本的SQL片段
  115. .build();
  116. //数据源配置
  117. DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig.Builder(URL, USERNAME, PASSWORD);
  118. //数据库类型转换器
  119. dataSourceConfigBuilder.typeConvert(new MySqlTypeConvert() {
  120. /*@Override
  121. public IColumnType processTypeConvert(GlobalConfig globalConfig, String tableField) {
  122. if (tableField.toLowerCase().contains("date") || tableField.toLowerCase().contains("timestamp") || tableField.toLowerCase().contains("datetime")) {
  123. return DbColumnType.STRING;
  124. }
  125. return super.processTypeConvert(globalConfig, tableField);
  126. }*/
  127. });
  128. //创建代码生成器对象,加载配置
  129. AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfigBuilder.build());
  130. autoGenerator.global(config);
  131. autoGenerator.packageInfo(packageConfig);
  132. autoGenerator.strategy(strategyConfig);
  133. //执行
  134. autoGenerator.execute();
  135. System.out.println("======================================== 相关代码生成完毕 =====================================");
  136. }
  137. }