经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
Mybatis-Plus一键生成代码
来源:cnblogs  作者:迷途者寻影而行  时间:2021/12/31 8:53:41  对本文有异议

Mybatis-Plus一键生成代码

一、闲言碎语

闲来无事看了看了MP的官网看到一键生成的代码更新了!

image

整个Ui风格都变了,遂决定瞅一眼新的代码生成器

官网地址~~

二、引入依赖

新的代码生成只有在MP的版本 >= 3.5.1才可以使用 并且不兼容之前的版本

  1. <!-- Mybatis-Plus依赖 注意和SpringBoot版本对应-->
  2. <dependency>
  3. <groupId>com.baomidou</groupId>
  4. <artifactId>mybatis-plus-boot-starter</artifactId>
  5. <version>3.4.0</version>
  6. </dependency>
  7. <!-- Mybatis-Plus添加代码生成器依赖 3.5.1才可以使用新的代码生成器-->
  8. <dependency>
  9. <groupId>com.baomidou</groupId>
  10. <artifactId>mybatis-plus-generator</artifactId>
  11. <version>3.5.1</version>
  12. </dependency>
  13. <!-- Mybatis-Plus添加代码生成器模板引擎-->
  14. <dependency>
  15. <groupId>org.freemarker</groupId>
  16. <artifactId>freemarker</artifactId>
  17. <version>2.3.31</version>
  18. </dependency>
  19. <!-- swagger可理解为接口文档规范 -->
  20. <dependency>
  21. <groupId>io.swagger</groupId>
  22. <artifactId>swagger-annotations</artifactId>
  23. <version>1.6.2</version>
  24. </dependency>

swagger可取舍,如果开启Lombok则可以不使用

三、配置

1、快速生成(简介版)

  1. FastAutoGenerator.create("url", "username", "password")
  2. .globalConfig(builder -> {
  3. builder.author("baomidou") // 设置作者
  4. .enableSwagger() // 开启 swagger 模式
  5. .fileOverride() // 覆盖已生成文件
  6. .outputDir("D://").disableOpenDir(); // 指定输出目录
  7. })
  8. .packageConfig(builder -> {
  9. builder.parent("com.baomidou.mybatisplus.samples.generator") // 设置父包名
  10. .moduleName("system") // 设置父包模块名
  11. .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") +)); // 设置mapperXml生成路径 前边是取项目路径
  12. })
  13. .strategyConfig(builder -> {
  14. builder.addInclude("t_simple") // 设置需要生成的表名,不设置生成全表
  15. .addTablePrefix("t_", "c_"); // 设置过滤表前缀
  16. })
  17. .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
  18. .execute();

2、快速生成(详细版)

  1. public static void main(String[] args) {
  2. FastAutoGenerator.create("jdbc:mysql://localhost:3306/daydayup?useUnicode=true&useSSL=false&characterEncoding=utf8", "root", "root")
  3. .globalConfig(builder -> {
  4. builder.author("知足") // 设置作者
  5. .enableSwagger() // 开启 swagger 模式 可理解为接口文档规范
  6. .fileOverride() // 覆盖已生成文件
  7. .outputDir(System.getProperty("user.dir") + "/src/main/java"); // 指定输出目录
  8. })
  9. .packageConfig(builder -> {
  10. builder.parent("") // 设置父包名
  11. .moduleName("") // 设置父包模块名
  12. .entity("entity")
  13. .controller("controller")
  14. .service("service")
  15. .serviceImpl("imp") //设置包名
  16. .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/srca/main/resources/mapper/")); // 设置mapperXml生成路径
  17. })
  18. .strategyConfig(builder -> {
  19. builder.addInclude("表名")// 设置需要生成的表名 不使用该方法默认生成全表
  20. .addTablePrefix("t_", "c_") // 设置过滤表前缀
  21. .serviceBuilder()//Service配置
  22. .formatServiceFileName("%sService")//%s = 表名 表名Service
  23. .formatServiceImplFileName("%sServiceImp")//同上
  24. .entityBuilder()//实体类配置 一般都是表名
  25. .enableLombok()//开启Lombok 开启 swagger 模式 就没必要使用这个
  26. .logicDeleteColumnName()//逻辑删除字段对应数据库那个字段
  27. .logicDeletePropertyName()//逻辑删除字段对应实体类库那个字段
  28. .controllerBuilder()//Controller配置
  29. .formatFileName("%sController")
  30. .enableRestStyle()//开启生成@RestController控制器
  31. .mapperBuilder()//mapper配置
  32. .formatMapperFileName("%sMapper")
  33. .formatXmlFileName("%sMapper")
  34. .enableMapperAnnotation()//开启@Mapper
  35. .superClass(BaseMapper.class);//继承的父类
  36. })
  37. // 使用Freemarker引擎模板,默认的是Velocity引擎模板
  38. .templateEngine(new FreemarkerTemplateEngine())
  39. .execute();
  40. }

尤其注意,pageinfo只能改变一个层级的文件输出目录,若是同时想改变Entity和MapperXml或者更多需要手动写一个Map

  1. Map<OutputFile, String> pathInfo = new HashMap<>();
  2. pathInfo.put(OutputFile.entity,System.getProperty("user.dir") + "entity位置");
  3. pathInfo.put(OutputFile.mapperXml,System.getProperty("user.dir") + "xml位置");

3、交互生成(暂未研究)

  1. FastAutoGenerator.create(DATA_SOURCE_CONFIG)
  2. // 全局配置
  3. .globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称?")).fileOverride())
  4. // 包配置
  5. .packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?")))
  6. // 策略配置
  7. .strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
  8. .controllerBuilder().enableRestStyle().enableHyphenStyle()
  9. .entityBuilder().enableLombok().addTableFills(
  10. new Column("create_time", FieldFill.INSERT)
  11. ).build())
  12. /*
  13. 模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
  14. .templateEngine(new BeetlTemplateEngine())
  15. .templateEngine(new FreemarkerTemplateEngine())
  16. */
  17. .execute();
  18. // 处理 all 情况
  19. protected static List<String> getTables(String tables) {
  20. return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
  21. }
迷途者寻影而行

原文链接:http://www.cnblogs.com/pkkyh/p/15728431.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号