MyBatis-Plus 提供了自动填充(MetaObjectHandler)的功能,可以在插入和更新数据时自动填充一些字段,如创建时间、更新时间、创建人、更新人等。这样可以简化代码,减少重复性的字段赋值操作。

以下是使用 MyBatis-Plus 进行自动填充的简单步骤:

1. 定义实体类:
   import com.baomidou.mybatisplus.annotation.FieldFill;
   import com.baomidou.mybatisplus.annotation.TableField;
   import com.baomidou.mybatisplus.annotation.TableName;
   import lombok.Data;

   import java.util.Date;

   @Data
   @TableName("user")
   public class User {

       private Long id;
       private String name;

       // 创建时间,插入时自动填充
       @TableField(fill = FieldFill.INSERT)
       private Date createTime;

       // 更新时间,插入和更新时自动填充
       @TableField(fill = FieldFill.INSERT_UPDATE)
       private Date updateTime;
   }

   在上述例子中,通过 @TableField(fill = FieldFill.INSERT) 和 @TableField(fill = FieldFill.INSERT_UPDATE) 注解标识需要自动填充的字段。

2. 配置自动填充处理器:

   创建一个自定义的处理器类,实现 MetaObjectHandler 接口,并配置到 MyBatis-Plus 的全局配置中。
   import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
   import org.apache.ibatis.reflection.MetaObject;
   import org.springframework.stereotype.Component;

   import java.util.Date;

   @Component
   public class MyMetaObjectHandler implements MetaObjectHandler {

       @Override
       public void insertFill(MetaObject metaObject) {
           this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
           this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
       }

       @Override
       public void updateFill(MetaObject metaObject) {
           this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
       }
   }

   在上述例子中,通过实现 MetaObjectHandler 接口,重写 insertFill 和 updateFill 方法,在插入和更新时进行相应的字段填充。

3. 配置 MyBatis-Plus 全局配置:
   import com.baomidou.mybatisplus.autoconfigure.MybatisPlusPropertiesCustomizer;
   import org.springframework.context.annotation.Bean;
   import org.springframework.context.annotation.Configuration;

   @Configuration
   public class MyBatisPlusConfig {

       @Bean
       public MybatisPlusPropertiesCustomizer plusPropertiesCustomizer() {
           return plusProperties -> plusProperties.getGlobalConfig().setMetaObjectHandler(new MyMetaObjectHandler());
       }
   }

   在上述例子中,通过配置 MybatisPlusPropertiesCustomizer 设置全局的 MetaObjectHandler。

通过以上步骤,就可以实现在插入和更新时自动填充指定字段。自动填充功能大大简化了在代码中手动设置这些字段的操作,提高了代码的简洁性和可读性。


转载请注明出处:http://www.zyzy.cn/article/detail/7062/MyBatis