1 代码生成器简介
代码生成器可以自动生成MybatisPlus代码。
如果不愿意手动编写和数据表对应的实体类及相关映射文件,MybatisPlus为我们提供了相关的效率提升工具(偷懒神器)——代码生成器,它可以读取数据库中的表信息,生成相应的可以供我们使用 MybatisPlus 代码。
与 Mybatis 的代码生成器 Mybatis Generator 二者的区别是:
- Mybatis Generator 是基于xml文件进行配置,MybatisPlus 代码生成器是基于 java 代码进行配置;
- Mybatis Generator 可以生成实体类、mapper接口、mapper映射文件;MybatisPlus代码生成器可以生成实体类、mapper接口、mapper映射文件、service类、controller类,功能更加强大。
2 添加依赖
在项目下的 pom.xml 文件中添加 mybatis-plus代码生成器需要的依赖。
代码语言:txt复制<!--mybatis-plus代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!--mybatis-plus代码生成器依赖的模板引擎-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
3 编写代码生成器的配置类
在配置类中除了数据库连接信息(URL,用户名,密码),主要分为三部分:
- 全局配置
- 包配置
- 生成策略配置
3.1 全局配置
在全局配置中,可以设置生成类里注释信息中的:
作者信息、
日期格式,及:
生成类目的地址的父目录信息、
开启swagger设置、
日期类型等。
3.2 包配置
在包配置部分,主要设置所有生成类包名所在前缀信息,按照不同层级区分的包名。
例如 实体层、mapper层、服务层、控制层的包名信息。
3.3 策略配置
在策略配置项中,主要配置的是生成类格式及数据表与生成类的映射关系信息:
如 表名前缀、表名后缀、开始配置实体类、生成的实体类中启用 lombok 模板、表中列名与实体类属性名之间是否使用下划线与驼峰的转换关系等。
3.4 具体配置信息
代码语言:java复制import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class MyGeneratorUtil {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3366/test", "root", "123456")
//全局配置
.globalConfig(builder -> {
builder.author("tester") //设置作者
.commentDate("yyyy-MM-dd") //注释日期格式
.outputDir(System.getProperty("user.dir") "/testMybatisPlusAR/src/main/java") //指定输出目录
.fileOverride(); //覆盖文件
})
//包配置
.packageConfig(builder -> {
builder.parent("com.test2") //包名的前缀
.entity("domain") //实体类包名
.mapper("mapper") //mapper接口包名
.service("service") //service包名
.controller("controller") //controller包名
.xml("mapper"); //映射文件包名
})
//策略配置
.strategyConfig(builder -> {
builder.addInclude("User") //设置需要生成的表名或排除的表名,支持多张表
.addTablePrefix("") //设置表名前缀
.addTableSuffix("") //设置表名后缀
.entityBuilder() //开始实体类配置
.enableLombok() //开启lombok模型
.naming(NamingStrategy.underline_to_camel) //表名下划线转驼峰
.columnNaming(NamingStrategy.underline_to_camel); //列名下划线转驼峰
})
.execute();
}
}
4 生成代码
运行上一步中创建的配置类,生成代码。
生成的代码效果如下
打开生成的实体类,因为所有属性及属性类型都是从数据库中读取,所以由程序控制的乐观锁及逻辑删除等功能是无法获取到的,缺少相应的注解外,可以看到与我们自己创建实体类已经相当接近,可以大幅减少实际的工作量。
代码语言:java复制package com.test2.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
*
* </p>
*
* @author tester
* @since 2023-04-15
*/
@Getter
@Setter
@TableName("user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String username;
private String gendar;
private String remark;
private Integer version;
private Integer isDeleted;
}
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!