分享一下mybatisPlus新代码生成器3.5.1以上

  金牌会员 | 2023-5-19 19:07:17 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 783|帖子 783|积分 2349

pom引入:有MP了就不要再引入mybatis了,会出bug的
  1.         <dependency>
  2.             <groupId>com.baomidou</groupId>
  3.             <artifactId>mybatis-plus-boot-starter</artifactId>
  4.             <version>3.5.3.1</version>
  5.         </dependency>
  6.         
  7.         <dependency>
  8.             <groupId>com.baomidou</groupId>
  9.             <artifactId>mybatis-plus-generator</artifactId>
  10.             <version>3.5.3.1</version>
  11.         </dependency>
  12.         
  13.         <dependency>
  14.             <groupId>junit</groupId>
  15.             <artifactId>junit</artifactId>
  16.             <version>4.13.2</version>
  17.         </dependency>
复制代码
代码主体,隐去ip信息。
  1. package com.sugerqube.XXX.Utils;
  2. import com.baomidou.mybatisplus.annotation.IdType;
  3. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4. import com.baomidou.mybatisplus.generator.FastAutoGenerator;
  5. import com.baomidou.mybatisplus.generator.config.OutputFile;
  6. import com.baomidou.mybatisplus.generator.config.rules.DateType;
  7. import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
  8. import org.junit.Test;
  9. import java.util.Collections;
  10. public class MPGenerator {
  11.     @Test
  12.     public void testGenerator() {
  13.         //1、配置数据源
  14.         FastAutoGenerator.create("jdbc:mysql://XXXXX/XXXXX", "root", "XXXXX")
  15.                 //2、全局配置
  16.                 .globalConfig(builder -> {
  17.                     builder.author("sugerqube") // 设置作者名
  18.                             .disableOpenDir()   //禁止打开输出目录,默认打开
  19.                             .outputDir(System.getProperty("user.dir") + "/src/main/java")   //设置输出路径:项目的 java 目录下
  20.                             .enableSwagger()   //开启 swagger 模式
  21. //                            .enableKotlin()
  22. //                            .enableSpringdoc()
  23.                             .dateType(DateType.ONLY_DATE)   //定义生成的实体类中日期的类型 TIME_PACK=LocalDateTime;ONLY_DATE=Date;
  24.                             .commentDate("yyyy-MM-dd hh:mm:ss");   //注释日期
  25.                 })
  26.                 //3、包配置
  27.                 .packageConfig(builder -> {
  28.                     builder.parent("com.sugerqube") // 设置父包名
  29.                             .moduleName("timecocoon")   //设置模块包名
  30.                             .entity("entity")   //pojo 实体类包名
  31.                             .service("service") //Service 包名
  32.                             .serviceImpl("serviceImpl") // ***ServiceImpl 包名
  33.                             .mapper("mapper")   //Mapper 包名
  34.                             .xml("mapper")  //Mapper XML 包名
  35.                             .controller("controller") //Controller 包名
  36.                             .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mapper"));  //配置 mapper.xml 路径信息:项目的 resources 目录下
  37.                 })
  38.                 //4、策略配置
  39.                 .strategyConfig(builder -> {
  40. //                    builder.addInclude("incident_point", "incident_sum", "incident_line", "incident_cause_effect", "graph") // 设置需要生成的数据表名
  41.                     builder.addInclude("incident_point") // 设置需要生成的数据表名
  42.                             .addTablePrefix("t_", "c_") // 设置过滤表前缀
  43.                             //4.1、实体类策略配置
  44.                             .entityBuilder()
  45.                             .enableLombok() //开启 Lombok
  46.                             .disableSerialVersionUID()  //不实现 Serializable 接口,不生产 SerialVersionUID
  47.                             .logicDeleteColumnName("deleted")   //逻辑删除字段名
  48.                             .naming(NamingStrategy.underline_to_camel)  //数据库表映射到实体的命名策略:下划线转驼峰命
  49.                             .columnNaming(NamingStrategy.underline_to_camel)    //数据库表字段映射到实体的命名策略:下划线转驼峰命
  50.                             .idType(IdType.ASSIGN_ID)
  51. //                            .addTableFills(new Column("create_time", FieldFill.INSERT))
  52. //                            .addTableFills(new Property("modifyTime", FieldFill.INSERT_UPDATE))
  53.                             .enableTableFieldAnnotation()       // 开启生成实体时生成字段注解
  54.                             .enableFileOverride()
  55.                             //4.2、Controller策略配置
  56.                             .controllerBuilder()
  57.                             .formatFileName("%sController") //格式化 Controller 类文件名称,%s进行匹配表名,如 UserController
  58.                             .enableRestStyle() //开启生成 @RestController 控制器
  59. //                            .enableFileOverride()
  60.                             //4.3、service 策略配置
  61.                             .serviceBuilder()
  62.                             .formatServiceFileName("%sService") //格式化 service 接口文件名称,%s进行匹配表名,如 UserService
  63.                             .formatServiceImplFileName("%sServiceImpl") //格式化 service 实现类文件名称,%s进行匹配表名,如 UserServiceImpl
  64. //                            .enableFileOverride()
  65.                             //4.4、Mapper策略配置
  66.                             .mapperBuilder()
  67.                             .superClass(BaseMapper.class)   //设置父类
  68.                             .formatMapperFileName("%sMapper")   //格式化 mapper 文件名称
  69.                             .enableMapperAnnotation()       //开启 @Mapper 注解
  70. //                            .enableFileOverride()
  71.                             .formatXmlFileName("%sXml"); //格式化 Xml 文件名称
  72.                 })
  73.                 //6、执行
  74.                 .execute();
  75.     }
  76. }
复制代码
下次有空写一篇详解,带大家简单讲一下使用,看一下文档和源码,新代码生成器的文档有一点点跟不上源码。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表