一、添加依赖
1.需要修改父版本号为2.5.4
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version><!--修改父版本号为2.5.4-->
<relativePath/> <!-- lookup parent from repository -->
</parent>
2.添加所需依赖
<!-- 数据库连接依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 代码生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
<scope>compile</scope>
</dependency>
<!-- mabatis-plus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- 引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
如果出现build里面如下代码报错
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
在该代码下添加父版本号
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.4</version>
二、代码生成器
创建MyApp类,与Applacation启动类同级;
run main方法,可自动创建三层架构代码,具体解释在代码注释
public class MyApp {
public static void main(String[] args) {
FastAutoGenerator.create(//数据库配置
"jdbc:mysql://localhost:3306/java_web",
"root",
"123457")
// 全局配置
.globalConfig(builder -> {
builder.author("Ray") // 设置作者
.enableSwagger() // 开启 swagger 模式
.outputDir("G:\\java_work\\mybatisplus_01\\src\\main\\java"); // 指定输出目录
})
// 代码生成包配置
.packageConfig(builder -> {
builder.parent("com.ray") // 设置父包名
.controller("controller") //controller
.service("service") //service
.serviceImpl("service.impl")//serviceImpl
.mapper("mapper")
.xml("mapper")
.entity("bean");//实体类
})
//表的配置
.strategyConfig(builder -> {
builder.addInclude("book").addInclude("user") // 设置需要生成的表名,可以添加多个
.addTablePrefix("")//消除表名前缀
.addFieldPrefix("");//消除字段前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
System.out.println("成功了...");
}
}
代码生成器生成的实体类将由下划线命名自动改为驼峰命名,例如user_id -->userId
通过代码生成器生成的时间字段的类型是LocalDateTime,改成Date类型
代码生成器生成的controller的注解,是@Controller,并非Rest风格,需要自己修改
ps:别忘了mapper扫描
三、实体类注释
如代码所示
//表名注解,正常情况不用,类名和表名不同时添加
@TableName("book")
@Data //lombok
public class Book implements Serializable {
private static final long serialVersionUID = 1L;
//主键注解 value:主键字段名 type:主键类型(如下类型为自增)
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
//非主键字段注解,常用属性 value:字段在数据库的名字 exist:数据库中是否存在该字段
@TableField(value = "name",exist = true)
private String name;
private String info;
private String author;
//逻辑删除 value:未删除值 delval:已删除值
@TableLogic(value = "0",delval = "1")
private int deleted;
}
四、自动填充
1. 添加配置类
@Slf4j
@Component
public class MybatisPlusHandler implements MetaObjectHandler {
//插入数据时自动填充
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
//后三个参数为 字段名 字段类型 填充值
this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
}
//修改数据时自动填充
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
//同上
this.strictUpdateFill(metaObject, "modifyTime", Date.class, new Date());
}
}
在需要填充的字段添加注解
//FieldFill是一个枚举 分别代表四种状态下对字段进行填充,自行理解
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.UPDATE)