描述一下mybatisplus自动填充的设计,并且使用场景
时间: 2023-05-21 12:06:16 浏览: 84
MybatisPlus自动填充是一种实用的设计,在创建表时自动填充某些列,从而简化代码和提高效率。该功能可以在Java Bean的属性上使用注解,定义填充方式和业务处理逻辑。使用场景包括:1.时间戳的自动填充 2.登录用户信息的自动填充
对于登录用户信息的自动填充,可以在Sql语句中封装(`CURRENT_USER`)或者在代码中用注解(@TableField(fill=FieldFill.INSERT_UPDATE,el="${currentUser.id}"))的方式。这种方式能有效地避免忘记设置操作人等基本信息,且不会对代码的逻辑产生过多的干扰。
相关问题
mybatisplus 自动填充
MyBatis-Plus(简称MP)是基于MyBatis框架的增强工具库,它提供了一些便捷的功能来简化数据访问操作。其中,自动填充是MP的一个特性,它可以在插入或更新实体时自动填充某些字段的值。
要实现自动填充功能,你可以按照以下步骤进行操作:
1. 创建一个实现了`MetaObjectHandler`接口的类,该类将用于处理自动填充字段的逻辑。你可以在该类中重写`insertFill`和`updateFill`方法,在这些方法中指定要填充的字段和对应的值。
2. 在实体类中使用`@TableField`注解标注需要自动填充的字段,并设置`fill = FieldFill.INSERT`或`fill = FieldFill.UPDATE`,以指定在插入或更新操作中进行自动填充。
3. 在MyBatis的配置文件中配置自动填充的插件。可以通过在`mybatis-config.xml`文件中添加如下配置来启用MP的自动填充功能:
```xml
<plugins>
<plugin interceptor="com.baomidou.mybatisplus.extension.plugins.inner.MetaObjectHandlerInterceptor"/>
</plugins>
```
以上是简单介绍了MyBatis-Plus自动填充的基本使用方法。你可以根据具体需求进行配置和扩展,例如自定义填充策略、多租户填充等。希望对你有所帮助!如果你还有其他问题,请继续提问。
mybatisplus自动填充
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 就会自动填充指定的字段值。