• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

MyBatis-Plus代码生成器(新)3.5.2的使用

武飞扬头像
马中有二
帮助5

1.官网

MyBatis-Plus代码生成器新

2.引入依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.2</version>
</dependency>

3.创建代码生成器的运行类

public class NewCodeGenerator {

    @Test
    public void run() {
        //配置部分

    }
}

4.创建数据库连接

FastAutoGenerator.create("jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT+8", "root", "123456")

5.全局配置

  .globalConfig(builder -> {
                    builder.author("perfect imitator") // 设置作者 baomidou 默认值:作者
                            .enableSwagger() // 开启 swagger 模式 默认值:false
                            .fileOverride() // 覆盖已生成文件 默认值:false
                            .disableOpenDir()//禁止打开输出目录 默认值:true
                            .commentDate("yyyy-MM-dd")// 注释日期
                            .dateType(DateType.ONLY_DATE)//定义生成的实体类中日期类型 DateType.ONLY_DATE 默认值: DateType.TIME_PACK
                            .outputDir(System.getProperty("user.dir")   "/src/main/java"); // 指定输出目录 /opt/baomidou/ 默认值: windows:D:// linux or mac : /tmp
                            //System.getProperty("user.dir")为你当前模块的绝对路径
                })

6.包配置

  .packageConfig(builder -> {
                    builder.parent("com.atguigu") // 父包模块名 默认值:com.baomidou
                            .controller("controller")//Controller 包名 默认值:controller
                            .entity("entity")//Entity 包名 默认值:entity
                            .service("service")//Service 包名 默认值:service
                            .mapper("mapper")//Mapper 包名 默认值:mapper
                            .moduleName("educms") // 设置父包模块名 默认值:无
                            .pathInfo(Collections.singletonMap(OutputFile.xml,System.getProperty("user.dir")  "/src/main/resources/mapper")); // 设置mapper.xml存放路径
                            //默认存放在mapper的xml下
                })

这里将自动生成的xml文件放在了main下的resource目录下,
学新通
如果没有进行设置,默认存放在mapperxml目录下
学新通

但是存放在这个目录下的xml文件时不能被解析的需要在yml文件中配置

# mybatis-plus设置
mybatis-plus:
  #配置mapper xml文件的路径
  mapper-locations: classpath:com/atguigu/educms/mapper/xml/*.xml

7.策略配置

 .strategyConfig(builder -> {
                    builder.addInclude("tb_banner") // 设置需要生成的表名 可边长参数“user”, “user1”
                            .addTablePrefix("tb_", "c_") // 设置过滤表前缀
                            .serviceBuilder()//service策略配置
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImpl")
                            .entityBuilder()// 实体类策略配置
                            .idType(IdType.ASSIGN_ID)//主键策略  雪花算法自动生成的id  
                            // 自动填充配置  
                            .addTableFills(new Column("gmt_create", FieldFill.INSERT)) //根据数据库字段名适配
                            .addTableFills(new Property("gmtModified", FieldFill.INSERT_UPDATE))//根据生成实体类的属性名适配
                            .enableLombok() //开启lombok
                            .logicDeleteColumnName("deleted")// 说明逻辑删除是哪个字段
                            .enableTableFieldAnnotation()// 属性加上注解说明
                            .controllerBuilder() //controller 策略配置
                            .formatFileName("%sController")
                            .enableRestStyle() // 开启RestController注解
                            .mapperBuilder()// mapper策略配置
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()//@mapper注解开启
                            .formatXmlFileName("%sMapper");
                })
学新通

注意这里两个问题

  • 1.设置主键自动生成的策略问题:
    • 如果你的主键类型为Long类型就用 IDType.ASSIGN_ID
    • 如果你的主键类型为String类型就用 IDType.ASSIGN_UUID
  • 2.字段自动填充
    • ColumnProperty的区别
	 //如想要生成的表中有gmt_create字段且开启了下划线自动转驼峰 那么就有以下几种配置方法
	 .addTableFills(new Column("gmt_create", FieldFill.INSERT)) //根据数据库字段名适配
	 //因为开启了下划线自动转驼峰所以实体类中对应的属性名为gmtCreate
	 .addTableFills(new Property("gmtCreate", FieldFill.INSERT)) //根据属性名适配

也可以用list集合的方式

// 自定义需要填充的字段 数据库中的字段
        List<IFill> columnList = new ArrayList<>();
        columnList.add(new Column("gmt_modified", FieldFill.INSERT_UPDATE));
        columnList.add(new Column("modifier_id", FieldFill.INSERT_UPDATE));
        columnList.add(new Column("creator_id", FieldFill.INSERT));
        columnList.add(new Column("gmt_create", FieldFill.INSERT));
        columnList.add(new Column("available_flag", FieldFill.INSERT));
        columnList.add(new Column("deleted_flag", FieldFill.INSERT));
        columnList.add(new Column("sync_flag", FieldFill.INSERT));
 		.addTableFills(tableFillList)

8.指定模板引擎

		.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
    	.execute();

9.完整代码

package codeDemo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import org.junit.Test;
import java.util.Collections;
public class NewCodeGenerator {
    @Test
    public void run() {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT+8", "root", "123456")
                .globalConfig(builder -> {
                    builder.author("perfect imitator") // 设置作者 baomidou 默认值:作者
                            .enableSwagger() // 开启 swagger 模式 默认值:false
                            .fileOverride() // 覆盖已生成文件 默认值:false
                            .disableOpenDir()//禁止打开输出目录 默认值:true
                            .commentDate("yyyy-MM-dd")// 注释日期
                            .dateType(DateType.ONLY_DATE)//定义生成的实体类中日期类型 DateType.ONLY_DATE 默认值: DateType.TIME_PACK
                            .outputDir(System.getProperty("user.dir")   "/src/main/java"); // 指定输出目录 /opt/baomidou/ 默认值: windows:D:// linux or mac : /tmp
                            //System.getProperty("user.dir")为你当前模块的绝对路径
                })

                .packageConfig(builder -> {
                    builder.parent("com.atguigu") // 父包模块名 默认值:com.baomidou
                            .controller("controller")//Controller 包名 默认值:controller
                            .entity("entity")//Entity 包名 默认值:entity
                            .service("service")//Service 包名 默认值:service
                            .mapper("mapper")//Mapper 包名 默认值:mapper
                            .moduleName("educms") // 设置父包模块名 默认值:无
                            .pathInfo(Collections.singletonMap(OutputFile.xml,System.getProperty("user.dir")  "/src/main/resources/mapper")); // 设置mapperXml生成路径
                            //默认存放在mapper的xml下
                })
                
                .strategyConfig(builder -> {
                    builder.addInclude("tb_banner") // 设置需要生成的表名 可边长参数“user”, “user1”
                            .addTablePrefix("tb_", "c_") // 设置过滤表前缀
                            .serviceBuilder()//service策略配置
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImpl")
                            .entityBuilder()// 实体类策略配置
                            .idType(IdType.ASSIGN_ID)//主键策略  雪花算法自动生成的id
                            .addTableFills(new Column("gmt_create", FieldFill.INSERT)) // 自动填充配置  
                            .addTableFills(new Property("gmtModified", FieldFill.INSERT_UPDATE))
                            .enableLombok() //开启lombok
                            .logicDeleteColumnName("deleted")// 说明逻辑删除是哪个字段
                            .enableTableFieldAnnotation()// 属性加上注解说明
                            .controllerBuilder() //controller 策略配置
                            .formatFileName("%sController")
                            .enableRestStyle() // 开启RestController注解
                            .mapperBuilder()// mapper策略配置
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()//@mapper注解开启
                            .formatXmlFileName("%sMapper");
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();

    }
}


学新通

10.效果图

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhkcck
系列文章
更多 icon
同类精品
更多 icon
继续加载