1. 引入的依赖

  1. <!--mp-->
  2. <dependency>
  3. <groupId>com.baomidou</groupId>
  4. <artifactId>mybatis-plus-boot-starter</artifactId>
  5. <version>3.2.0</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-freemarker</artifactId>
  10. </dependency>
  11. <dependency>
  12. <groupId>mysql</groupId>
  13. <artifactId>mysql-connector-java</artifactId>
  14. <scope>runtime</scope>
  15. </dependency>
  16. <dependency>
  17. <groupId>io.springfox</groupId>
  18. <artifactId>springfox-swagger2</artifactId>
  19. <version>3.0.0</version>
  20. </dependency>
  21. <!--mp代码生成器-->
  22. <dependency>
  23. <groupId>com.baomidou</groupId>
  24. <artifactId>mybatis-plus-generator</artifactId>
  25. <version>3.2.0</version>
  26. </dependency>

2. generator代码

  1. import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
  2. import com.baomidou.mybatisplus.core.toolkit.StringPool;
  3. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  4. import com.baomidou.mybatisplus.generator.AutoGenerator;
  5. import com.baomidou.mybatisplus.generator.InjectionConfig;
  6. import com.baomidou.mybatisplus.generator.config.*;
  7. import com.baomidou.mybatisplus.generator.config.po.TableInfo;
  8. import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
  9. import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. import java.util.Scanner;
  13. /**
  14. * <p>
  15. * 代码生成器,使用方法,直接运行;根据控制台提示输入模块名(demo),然后输入表名即可
  16. * </p>
  17. */
  18. public class CodeGenerator {
  19. public static final String OUTPUTDIR = "/src/main/java";
  20. public static final String AUTHOR = "shiwei";
  21. public static final String DBURL = "jdbc:mysql://127.0.0.1:3306/authority?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=false";
  22. public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
  23. public static final String DBUSER = "root";
  24. public static final String DBPASSWORD = "admin";
  25. public static void main(String[] args) {
  26. // 代码生成器
  27. AutoGenerator mpg = new AutoGenerator();
  28. // 全局配置
  29. GlobalConfig gc = new GlobalConfig();
  30. String projectPath = System.getProperty("user.dir");
  31. gc.setOutputDir(projectPath + OUTPUTDIR);
  32. gc.setAuthor(AUTHOR);
  33. gc.setOpen(false);
  34. //是否覆盖文件
  35. gc.setFileOverride(false);
  36. //自定义文件名
  37. gc.setMapperName("%sMapper");
  38. gc.setServiceName("%sService");
  39. gc.setServiceImplName("%sServiceImpl");
  40. mpg.setGlobalConfig(gc);
  41. // 数据源配置
  42. DataSourceConfig dsc = new DataSourceConfig();
  43. dsc.setUrl(DBURL);
  44. dsc.setDriverName(DBDRIVER);
  45. dsc.setUsername(DBUSER);
  46. dsc.setPassword(DBPASSWORD);
  47. mpg.setDataSource(dsc);
  48. // 包配置
  49. PackageConfig pc = new PackageConfig();
  50. // pc.setModuleName(scanner("模块名"));
  51. pc.setParent("com.mhz.modulers");
  52. pc.setEntity("entity");
  53. pc.setXml("dao");
  54. pc.setService("service");
  55. mpg.setPackageInfo(pc);
  56. // 自定义配置
  57. InjectionConfig cfg = new InjectionConfig() {
  58. @Override
  59. public void initMap() {
  60. // to do nothing
  61. }
  62. };
  63. // 如果模板引擎是 freemarker
  64. String templatePath = "/templates/mapper.xml.ftl";
  65. // 如果模板引擎是 velocity
  66. // String templatePath = "/templates/mapper.xml.vm";
  67. // 自定义输出配置
  68. List<FileOutConfig> focList = new ArrayList<>();
  69. // 自定义配置会被优先输出
  70. focList.add(new FileOutConfig(templatePath) {
  71. @Override
  72. public String outputFile(TableInfo tableInfo) {
  73. // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
  74. // return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
  75. // + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
  76. return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
  77. }
  78. });
  79. cfg.setFileOutConfigList(focList);
  80. mpg.setCfg(cfg);
  81. // 配置模板
  82. //TemplateConfig templateConfig = new TemplateConfig();
  83. //templateConfig.setXml(null);
  84. //mpg.setTemplate(templateConfig);
  85. // 策略配置
  86. StrategyConfig strategy = new StrategyConfig();
  87. strategy.setNaming(NamingStrategy.underline_to_camel);
  88. strategy.setColumnNaming(NamingStrategy.underline_to_camel);
  89. strategy.setEntityLombokModel(true);
  90. strategy.setRestControllerStyle(true);
  91. // 写于父类中的公共字段
  92. strategy.setSuperEntityColumns("id");
  93. strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
  94. strategy.setControllerMappingHyphenStyle(true);
  95. strategy.setTablePrefix("m_");
  96. mpg.setStrategy(strategy);
  97. mpg.setTemplateEngine(new FreemarkerTemplateEngine());
  98. mpg.execute();
  99. }
  100. /**
  101. * <p>
  102. * 读取控制台内容
  103. * </p>
  104. */
  105. public static String scanner(String tip) {
  106. Scanner scanner = new Scanner(System.in);
  107. StringBuilder help = new StringBuilder();
  108. help.append("请输入" + tip + ":");
  109. System.out.println(help.toString());
  110. if (scanner.hasNext()) {
  111. String ipt = scanner.next();
  112. if (StringUtils.isNotEmpty(ipt)) {
  113. return ipt;
  114. }
  115. }
  116. throw new MybatisPlusException("请输入正确的" + tip + "!");
  117. }
  118. }