mybatisPlus代码生成工具

素颜马尾好姑娘i 2023-06-01 06:16 314阅读 0赞

手敲entity、dao、mapper.xml、service、controller的老套路,不仅让人厌倦,还严重影响开发效率。作为开发,不是应该更专注业务功能的实现吗?

毕竟这些无关业务逻辑,要是给个表名,就有个现成的CRUD代码就好了!

这不,mybatisplus提供了代码生成器,轻松生成mvc三层代码。

首先,引入pom文件

  1. <dependency>
  2. <groupId>mysql</groupId>
  3. <artifactId>mysql-connector-java</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.projectlombok</groupId>
  7. <artifactId>lombok</artifactId>
  8. <optional>true</optional>
  9. </dependency>
  10. <dependency>
  11. <groupId>com.baomidou</groupId>
  12. <artifactId>mybatis-plus-boot-starter</artifactId>
  13. <version>3.0.6</version>
  14. </dependency>
  15. <dependency>
  16. <groupId>org.apache.velocity</groupId>
  17. <artifactId>velocity-engine-core</artifactId>
  18. <version>2.1</version>
  19. </dependency>

然后,代码生成器如下:

  1. package domain;
  2. import com.baomidou.mybatisplus.annotation.DbType;
  3. import com.baomidou.mybatisplus.generator.AutoGenerator;
  4. import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
  5. import com.baomidou.mybatisplus.generator.config.GlobalConfig;
  6. import com.baomidou.mybatisplus.generator.config.PackageConfig;
  7. import com.baomidou.mybatisplus.generator.config.StrategyConfig;
  8. import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
  9. import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
  10. /**
  11. * 生成代码工具
  12. */
  13. public class Generate {
  14. public static void main(String[] args) {
  15. Generate g = new Generate();
  16. boolean startWithI = true;
  17. String projectName = "Demo";
  18. String packageName = "com.xp.boot.web";
  19. String tableName = "test_log";
  20. g.generateByTables(startWithI,projectName,packageName,tableName);
  21. }
  22. /**
  23. * 根据表自动生成
  24. *
  25. * @param serviceNameStartWithI 默认为false
  26. * @param packageName 包名
  27. * @param tableNames 表名
  28. */
  29. private void generateByTables(boolean serviceNameStartWithI,String projectName, String packageName, String... tableNames) {
  30. //配置数据源
  31. DataSourceConfig dataSourceConfig = getDataSourceConfig();
  32. // 策略配置
  33. StrategyConfig strategyConfig = getStrategyConfig(tableNames);
  34. //全局变量配置
  35. GlobalConfig globalConfig = getGlobalConfig(serviceNameStartWithI,projectName);
  36. //包名配置
  37. PackageConfig packageConfig = getPackageConfig(packageName);
  38. //自动生成
  39. atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig);
  40. }
  41. /**
  42. * 集成
  43. *
  44. * @param dataSourceConfig 配置数据源
  45. * @param strategyConfig 策略配置
  46. * @param config 全局变量配置
  47. * @param packageConfig 包名配置
  48. */
  49. private void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig, GlobalConfig config, PackageConfig packageConfig) {
  50. new AutoGenerator()
  51. .setGlobalConfig(config)
  52. .setDataSource(dataSourceConfig)
  53. .setStrategy(strategyConfig)
  54. .setPackageInfo(packageConfig)
  55. .setTemplateEngine(new VelocityTemplateEngine())
  56. .execute();
  57. }
  58. /**
  59. * 设置包名
  60. *
  61. * @param packageName 父路径包名
  62. * @return PackageConfig 包名配置
  63. */
  64. private PackageConfig getPackageConfig(String packageName) {
  65. return new PackageConfig()
  66. .setParent(packageName)
  67. .setXml("mapper")
  68. .setMapper("mapper")
  69. .setController("controller")
  70. .setService("service")
  71. .setEntity("entity");
  72. }
  73. /**
  74. * 全局配置
  75. *
  76. * @param serviceNameStartWithI false
  77. * @return GlobalConfig
  78. */
  79. private GlobalConfig getGlobalConfig(boolean serviceNameStartWithI,String projectName) {
  80. GlobalConfig globalConfig = new GlobalConfig();
  81. globalConfig
  82. .setBaseColumnList(true)
  83. .setBaseResultMap(true)
  84. .setActiveRecord(false)
  85. .setAuthor("尼古拉斯-肖")
  86. //设置输出路径
  87. .setOutputDir(System.getProperty("user.dir")+"/"+projectName+"/src/main/java/")
  88. .setFileOverride(true);
  89. if (!serviceNameStartWithI) {
  90. //设置service名
  91. globalConfig.setServiceName("%sService");
  92. }
  93. return globalConfig;
  94. }
  95. /**
  96. * 策略配置
  97. *
  98. * @param tableNames 表名
  99. * @return StrategyConfig
  100. */
  101. private StrategyConfig getStrategyConfig(String... tableNames) {
  102. return new StrategyConfig()
  103. // 全局大写命名 ORACLE 注意
  104. .setCapitalMode(true)
  105. .setEntityLombokModel(true)
  106. .setRestControllerStyle(false)
  107. //从数据库表到文件的命名策略
  108. .setNaming(NamingStrategy.underline_to_camel)
  109. .setColumnNaming(NamingStrategy.underline_to_camel)
  110. //需要生成的的表名,多个表名传数组
  111. .setInclude(tableNames);
  112. }
  113. /**
  114. * 配置数据源
  115. *
  116. * @return 数据源配置 DataSourceConfig
  117. */
  118. private DataSourceConfig getDataSourceConfig() {
  119. return new DataSourceConfig().setDbType(DbType.MYSQL)
  120. .setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=Hongkong&nullCatalogMeansCurrent=true&characterEncoding=UTF-8&useSSL=false")
  121. .setUsername("root")
  122. .setPassword("123456")
  123. .setDriverName("com.mysql.cj.jdbc.Driver");
  124. }
  125. }

配置好数据库,以及表名、包名等参数后,main方法运行:

1628476-20190904181041616-1340703334.png

代码就生成在对应的位置了:

1628476-20190904181413765-2145112627.png

转载于:https://www.cnblogs.com/xphhh/p/11460600.html

发表评论

表情:
评论列表 (有 0 条评论,314人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mybatis 代码生成工具

    Mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以 Mybatis 官方也推出了一个 Mybatis 代

    相关 通用代码生成工具

    项目简介 CodeBuilder可以帮助你快速生成模板文件,目前支持mysql、oracle、sql server数据库。 您可以自己制作代码模板并添加到模板目录,帮助