1. lombok
1.1 概述
可以帮我们生成getter,setter方法,构造方法,toString方法,可以简化我们"实体类"的书写
1.2 步骤
1.导包
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
2. 给实体类添加注解
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String userName;
private String password;
private String name;
private Integer age;
private Integer gender;
private String email;
}
1.3 其他注解
1. @Slf4J 日志对象
@Slf4j
public class LombokTest {
@Test
public void testSlf4J(){
log.error("错误日志信息!");
}
}
2. @Builder
@Data
@Builder
public class Student {
private Integer id;
private String userName;
private String password;
private String name;
private Integer age;
private Integer gender;
private String email;
private String info;
}
Student s3 = Student.builder()
.id(1)
.userName("zhangsan")
.name("张三")
.age(23)
.build();
System.out.println(s3);
2. MybatisPlus-枚举
2.2 实现步骤
1. 定义一个枚举类,实现IEnum接口
package com.test.enums;
import com.baomidou.mybatisplus.annotation.IEnum;
//性别枚举
public enum GenderEnum implements IEnum<Integer> {
男(0, "男"),
女(1, "女");
//每个枚举的真实值
private int value;
//每个枚举的字符串形式
private String desc;
//构造方法
GenderEnum(int value, String desc) {
this.value = value;
this.desc = desc;
}
/**
* 用来获取每个枚举的真实值
* @return 枚举的真实值
*/
@Override
public Integer getValue() {
return this.value;
}
/**
* 用来返回每个枚举的字符串形式
* @return 枚举的字符串形式
*/
@Override
public String toString() {
return desc;
}
}
2. 修改实体属性的数据类型
@Data
@TableName("tb_user")
public class User {
@TableId(type = IdType.AUTO)
private Integer id;
private String userName;
private String password;
private String name;
private Integer age;
private GenderEnum gender;
}
3. 配置枚举所在位置
# 配置枚举所在位置
mybatis-plus.type-enums-package=com.test.enums
3. MybatisPlus-自动填充功能
1.创建自动填充类
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 添加数据时,自动执行这个方法
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
//给password填充数据
//metaObject:正在添加的数据
//fieldName: 被添加数据的列的名字
//fieldType: 被添加的数据的类型
//fieldVal: 被添加的数据
this.strictInsertFill(metaObject, "password", String.class, "123456"); // 起始版本 3.3.0(推荐使用)
// 或者
//this.fillStrategy(metaObject, "password", "123456"); // 也可以使用(3.3.0 该方法有bug)
}
/**
* 修改数据的时候,自动执行的方法
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "password", String.class, "123456"); // 起始版本 3.3.0(推荐使用)
}
}
//======================================================
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 自定义的插入的自动填充的逻辑
* @param metaObject 你要操作的对象 (new User() user.setCreated(new Date())) mapper.insert(user);
*/
@Override
public void insertFill(MetaObject metaObject) {
//获得metaObject的created属性值
Object created = getFieldValByName("created", metaObject);
if (null == created) {
//字段为空,可以进行填充
setFieldValByName("created", new Date(), metaObject);
}
//获得metaObject的updated属性值
Object updated = getFieldValByName("updated", metaObject);
if (null == updated) {
//字段为空,可以进行填充
setFieldValByName("updated", new Date(), metaObject);
}
}
/**
* 编写的更新的自动填充的业务逻辑
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
//更新数据时,直接更新字段
setFieldValByName("updated", new Date(), metaObject);
}
}
2.修改实体类属性
@Data
@Builder
@TableName("tb_user")
public class User {
@TableId(type = IdType.AUTO)
private Integer id;
private String userName;
@TableField(fill = FieldFill.INSERT_UPDATE)
private String password;
private String name;
private Integer age;
private GenderEnum gender;
}