mybatisplus自动填充
时间: 2023-08-24 19:07:43 浏览: 103
Mybatis-Plus自动填充的实现示例
5星 · 资源好评率100%
MyBatis-Plus (简称 MP) 是一个 MyBatis 的增强工具,其中之一的功能就是自动填充。自动填充功能可以在插入或更新操作时,自动填充指定字段的值,比如创建时间、更新时间等。
要使用 MyBatis-Plus 的自动填充功能,首先需要创建一个实现了 `MetaObjectHandler` 接口的类。这个接口中定义了两个方法:`insertFill` 和 `updateFill`。`insertFill` 方法在插入操作时调用,`updateFill` 方法在更新操作时调用。
在这两个方法中,你可以设置需要填充的字段和对应的值。可以使用 `FieldFill` 枚举类来指定填充方式,常用的有 `INSERT` 表示插入时填充,`UPDATE` 表示更新时填充。具体使用方法如下:
```java
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
}
```
上面的代码中,我们设置了两个字段 `createTime` 和 `updateTime` 的填充值为当前时间。通过调用 `setFieldValByName` 方法,可以将指定字段的值设置到对应的属性中。
接下来,在实体类中需要填充的字段上使用 `@TableField` 注解,并指定 `fill` 属性为需要的填充方式,比如 `FieldFill.INSERT` 或 `FieldFill.UPDATE`:
```java
public class User {
@TableId
private Long id;
private String name;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
// 省略getter和setter
}
```
在上面的示例中,我们将 `createTime` 字段设置为插入时填充,将 `updateTime` 字段设置为插入和更新时都进行填充。
这样,每次进行插入或更新操作时,MyBatis-Plus 就会自动填充指定的字段值。
阅读全文