GeneratorCodeByTables.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package com.yh.saas.plugin;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.io.Serializable;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.Properties;
  8. import com.baomidou.mybatisplus.generator.AutoGenerator;
  9. import com.baomidou.mybatisplus.generator.InjectionConfig;
  10. import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
  11. import com.baomidou.mybatisplus.generator.config.FileOutConfig;
  12. import com.baomidou.mybatisplus.generator.config.GlobalConfig;
  13. import com.baomidou.mybatisplus.generator.config.PackageConfig;
  14. import com.baomidou.mybatisplus.generator.config.StrategyConfig;
  15. import com.baomidou.mybatisplus.generator.config.TemplateConfig;
  16. import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
  17. import com.baomidou.mybatisplus.generator.config.po.TableInfo;
  18. import com.baomidou.mybatisplus.generator.config.rules.DbType;
  19. import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
  20. /**
  21. * 生成代码
  22. *
  23. * @author gdc
  24. */
  25. public class GeneratorCodeByTables {
  26. private static final String DATA_SOURCE_PREFIX = "spring.datasource.";
  27. private static final String DATA_SOURCE_URL = "jdbc:mysql://47.100.3.209:3306/wlhy?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=UTC";
  28. private static final String DATA_SOURCE_USERNAME = "root";
  29. private static final String DATA_SOURCE_CIPHER_CODE = "Ccj841968545";
  30. private static final String DATA_SOURCE_DRIVER_CLASS_NAME = "com.mysql.cj.jdbc.Driver";
  31. private static Properties properties;
  32. static {
  33. try {
  34. properties = new Properties();
  35. properties.put(DATA_SOURCE_PREFIX + "url", DATA_SOURCE_URL);
  36. properties.put(DATA_SOURCE_PREFIX + "username", DATA_SOURCE_USERNAME);
  37. properties.put(DATA_SOURCE_PREFIX + "password", DATA_SOURCE_CIPHER_CODE);
  38. properties.put(DATA_SOURCE_PREFIX + "driver-class-name", DATA_SOURCE_DRIVER_CLASS_NAME);
  39. } catch (Exception e) {
  40. }
  41. }
  42. public static void main(String[] args) throws IOException {
  43. generateByTables("Gdc", "com.yh.saas.plugin.yiliangyiyun","hy_token");
  44. }
  45. /**
  46. * 通过表生成类
  47. *
  48. * @param author 作者
  49. * @param packageName 包名
  50. * @param tableNames 表名,不传创建所有
  51. * @throws IOException
  52. */
  53. private static void generateByTables(String author, String packageName, String... tableNames) throws IOException {
  54. GlobalConfig config = new GlobalConfig();
  55. String dbUrl = properties.getProperty(DATA_SOURCE_PREFIX + "url");
  56. String dbUsername = properties.getProperty(DATA_SOURCE_PREFIX + "username");
  57. String dbPassword = properties.getProperty(DATA_SOURCE_PREFIX + "password");
  58. String dbDriverName = properties.getProperty(DATA_SOURCE_PREFIX + "driver-class-name");
  59. DataSourceConfig dataSourceConfig = new DataSourceConfig();
  60. dataSourceConfig.setDbType(DbType.MYSQL).setUrl(dbUrl).setUsername(dbUsername).setPassword(dbPassword)
  61. .setDriverName(dbDriverName);
  62. StrategyConfig strategyConfig = new StrategyConfig();
  63. strategyConfig.setEntityLombokModel(true)
  64. .setSuperEntityColumns("create_date", "create_user_id", "update_date", "update_user_id", "update_flag",
  65. "delete_flag", "update_count", "now_version_no", "prev_version_no")
  66. .setSuperEntityClass("BaseModel").setRestControllerStyle(true).setCapitalMode(true)
  67. .setDbColumnUnderline(true).setNaming(NamingStrategy.underline_to_camel).setInclude(tableNames);// 修改替换成你需要的表名,多个表名传数组
  68. config.setActiveRecord(true).setAuthor(author).setOutputDir(new File("src/main/java").getCanonicalPath())
  69. .setFileOverride(false).setEnableCache(false);
  70. TemplateConfig templateConfig = new TemplateConfig();
  71. templateConfig.setXml(null);
  72. new MyAutoGenerator().setGlobalConfig(config).setDataSource(dataSourceConfig).setStrategy(strategyConfig)
  73. .setCfg(crateInjectionConfig()).setTemplate(templateConfig)
  74. .setPackageInfo(
  75. new PackageConfig().setParent(packageName).setController("controller").setEntity("entity"))
  76. .execute();
  77. }
  78. /**
  79. * 获取应用配置
  80. *
  81. * @return 应用配置
  82. * @throws IOException
  83. */
  84. private static Properties getApplicationProperties() throws IOException {
  85. Properties properties = new Properties();
  86. properties.load(GeneratorCodeByTables.class.getClassLoader().getResourceAsStream("application.properties"));
  87. return properties;
  88. }
  89. /**
  90. * 生成自定义配置
  91. *
  92. * @return 自定义配置
  93. */
  94. private static InjectionConfig crateInjectionConfig() {
  95. InjectionConfig cfg = new InjectionConfig() {
  96. @Override
  97. public void initMap() {
  98. // ignore
  99. }
  100. };
  101. List<FileOutConfig> focList = new ArrayList<>();
  102. focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
  103. @Override
  104. public String outputFile(TableInfo tableInfo) {
  105. String mapperBasePath = "/";
  106. try {
  107. mapperBasePath = new File("src/main/resources/mapper").getCanonicalPath();
  108. } catch (IOException e) {
  109. // ignore
  110. }
  111. return mapperBasePath + "/" + tableInfo.getEntityName() + "Mapper.xml";
  112. }
  113. });
  114. cfg.setFileOutConfigList(focList);
  115. return cfg;
  116. }
  117. public static class MyAutoGenerator extends AutoGenerator {
  118. @Override
  119. protected ConfigBuilder pretreatmentConfigBuilder(ConfigBuilder config) {
  120. ConfigBuilder myConfig = super.pretreatmentConfigBuilder(config);
  121. myConfig.getTableInfoList().stream()
  122. .forEach(tableInfo -> tableInfo.setImportPackages(Serializable.class.getCanonicalName()));
  123. return myConfig;
  124. }
  125. }
  126. }