MapperGenerator.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. package com.gyee.power.fitting;
  2. import com.baomidou.mybatisplus.annotation.DbType;
  3. import com.baomidou.mybatisplus.generator.AutoGenerator;
  4. import com.baomidou.mybatisplus.generator.InjectionConfig;
  5. import com.baomidou.mybatisplus.generator.config.*;
  6. import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
  7. import com.baomidou.mybatisplus.generator.config.po.TableInfo;
  8. import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
  9. import java.io.File;
  10. import java.io.IOException;
  11. import java.util.ArrayList;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. /**
  16. * 代码生成器
  17. */
  18. public class MapperGenerator {
  19. //项目路径
  20. private static String canonicalPath = "";
  21. //基本包名
  22. private static String basePackage = "com.gyee.power.fetting";
  23. //作者
  24. private static String authorName = "chenmh";
  25. //要生成的表名
  26. private static String[] tables = {"WINDPOWERSTATION"};
  27. //table前缀
  28. private static String prefix = "";
  29. //数据库类型
  30. private static DbType dbType = DbType.SQLITE;
  31. //数据库配置四要素
  32. // private static String driverName = "com.mysql.cj.jdbc.Driver";
  33. // private static String url = "jdbc:mysql://localhost:3306/gyee_sample_kudu?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC";
  34. // private static String username = "root";
  35. // private static String password = "";
  36. private static String driverName = "org.sqlite.JDBC";
  37. private static String url = "jdbc:sqlite::resource:DataMiningTools.db";
  38. private static String username = null;
  39. private static String password = null;
  40. // private static String url = "jdbc:oracle:thin:@192.168.1.105:1521:gdnxfd";
  41. // private static String username = "nxfdprod";
  42. // private static String password = "gdnxfd123";
  43. public static void main(String[] args) {
  44. AutoGenerator gen = new AutoGenerator();
  45. /**
  46. * 获取项目路径
  47. */
  48. try {
  49. canonicalPath = new File("").getCanonicalPath();
  50. } catch (IOException e) {
  51. e.printStackTrace();
  52. }
  53. /**
  54. * 数据库配置
  55. */
  56. gen.setDataSource(new DataSourceConfig()
  57. .setDbType(dbType)
  58. .setDriverName(driverName)
  59. .setUrl(url)
  60. .setUsername(username)
  61. .setPassword(password)
  62. .setTypeConvert(new MySqlTypeConvert() {
  63. // 自定义数据库表字段类型转换【可选】
  64. //@Override
  65. //public DbColumnType processTypeConvert(String fieldType) {
  66. //System.out.println("转换类型:" + fieldType);
  67. // if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
  68. // return DbColumnType.BOOLEAN;
  69. // }
  70. //return super.processTypeConvert(fieldType);
  71. //}
  72. }));
  73. /**
  74. * 全局配置
  75. */
  76. gen.setGlobalConfig(new GlobalConfig()
  77. .setOutputDir( canonicalPath + "/src/main/java")//输出目录
  78. .setFileOverride(true)// 是否覆盖文件
  79. .setActiveRecord(true)// 开启 activeRecord 模式
  80. .setEnableCache(false)// XML 二级缓存
  81. .setBaseResultMap(true)// XML ResultMap
  82. .setBaseColumnList(true)// XML columList
  83. .setOpen(false)//生成后打开文件夹
  84. .setAuthor(authorName)
  85. // 自定义文件命名,注意 %s 会自动填充表实体属性!
  86. .setMapperName("%sMapper")
  87. .setXmlName("%sMapper")
  88. .setServiceName("%sService")
  89. .setServiceImplName("%sServiceImpl")
  90. .setControllerName("%sController")
  91. );
  92. /**
  93. * 策略配置
  94. */
  95. gen.setStrategy(new StrategyConfig()
  96. // .setCapitalMode(true)// 全局大写命名
  97. //.setDbColumnUnderline(true)//全局下划线命名
  98. .setTablePrefix(new String[]{prefix})// 此处可以修改为您的表前缀
  99. .setNaming(NamingStrategy.underline_to_camel)// 表名生成策略
  100. .setInclude(tables) // 需要生成的表
  101. .setRestControllerStyle(true)
  102. //.setExclude(new String[]{"test"}) // 排除生成的表
  103. // 自定义实体父类
  104. // .setSuperEntityClass("com.baomidou.demo.TestEntity")
  105. // 自定义实体,公共字段
  106. //.setSuperEntityColumns(new String[]{"test_id"})
  107. //.setTableFillList(tableFillList)
  108. // 自定义 mapper 父类 默认BaseMapper
  109. //.setSuperMapperClass("com.baomidou.mybatisplus.mapper.BaseMapper")
  110. // 自定义 service 父类 默认IService
  111. // .setSuperServiceClass("com.baomidou.demo.TestService")
  112. // 自定义 service 实现类父类 默认ServiceImpl
  113. // .setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl")
  114. // 自定义 controller 父类
  115. //.setSuperControllerClass("com.kichun."+packageName+".controller.AbstractController")
  116. // 【实体】是否生成字段常量(默认 false)
  117. // public static final String ID = "test_id";
  118. // .setEntityColumnConstant(true)
  119. // 【实体】是否为构建者模型(默认 false)
  120. // public User setName(String name) {this.name = name; return this;}
  121. // .setEntityBuilderModel(true)
  122. // 【实体】是否为lombok模型(默认 false)<a href="https://projectlombok.org/">document</a>
  123. .setEntityLombokModel(true)
  124. // Boolean类型字段是否移除is前缀处理
  125. // .setEntityBooleanColumnRemoveIsPrefix(true)
  126. // .setRestControllerStyle(true)
  127. // .setControllerMappingHyphenStyle(true)
  128. );
  129. /**
  130. * 包配置
  131. */
  132. gen.setPackageInfo(new PackageConfig()
  133. //.setModuleName("User")
  134. .setParent(basePackage)// 自定义包路径
  135. .setController("controller")// 这里是控制器包名,默认 web
  136. .setEntity("model") // 设置Entity包名,默认entity
  137. .setMapper("mapper") // 设置Mapper包名,默认mapper
  138. .setService("service") // 设置Service包名,默认service
  139. .setServiceImpl("service.impl") // 设置Service Impl包名,默认service.impl
  140. .setXml("mapper") // 设置Mapper XML包名,默认mapper.xml
  141. );
  142. /**
  143. * 注入自定义配置
  144. */
  145. // 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
  146. InjectionConfig abc = new InjectionConfig() {
  147. @Override
  148. public void initMap() {
  149. Map<String, Object> map = new HashMap<String, Object>();
  150. map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
  151. this.setMap(map);
  152. }
  153. };
  154. //自定义文件输出位置(非必须)
  155. List<FileOutConfig> fileOutList = new ArrayList<FileOutConfig>();
  156. fileOutList.add(new FileOutConfig("/templates/mapper.xml.vm") {
  157. @Override
  158. public String outputFile(TableInfo tableInfo) {
  159. return canonicalPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper.xml";
  160. }
  161. });
  162. abc.setFileOutConfigList(fileOutList);
  163. gen.setCfg(abc);
  164. /**
  165. * 指定模板引擎 默认是VelocityTemplateEngine ,需要引入相关引擎依赖
  166. */
  167. //gen.setTemplateEngine(new FreemarkerTemplateEngine());
  168. /**
  169. * 模板配置
  170. */
  171. gen.setTemplate(
  172. // 关闭默认 xml 生成,调整生成 至 根目录
  173. new TemplateConfig().setXml(null)
  174. // 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
  175. // 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
  176. // .setController("...");
  177. // .setEntity("...");
  178. // .setMapper("...");
  179. // .setXml("...");
  180. // .setService("...");
  181. // .setServiceImpl("...");
  182. );
  183. // 执行生成
  184. gen.execute();
  185. }
  186. }