MapperGenerator.java 8.8 KB

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