Skip to content
广告❤️成为赞助商

自动填充功能

可以将一些公共字段设置自动填充,如createTime,creatorId等等

com.anwen.mongo.handlers.MetaObjectHandler

  • 实现元对象处理器接口:com.anwen.mongo.handlers.MetaObjectHandler

  • 注解填充字段 @CollectionField(.. fill = FieldFill.INSERT)

java
public class User {

    // 注意!这里需要标记为填充字段
    @CollectionField(.. fill = FieldFill.INSERT)
    private String fillField;

    ....
}
  • 自定义实现类 MyMetaObjectHandler,并注册为Bean
java
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(AutoFillMetaObject insertAutoFillMetaObject) {
        insertAutoFillMetaObject.fillValue(User::getCreateTime, LocalDateTime.now());
    }

    @Override
    public void updateFill(AutoFillMetaObject updateAutoFillMetaObject) {
        updateAutoFillMetaObject.fillValue(User::getCreateTime, LocalDateTime.now());
    }
}

注意事项:

  • 自动填充实现类,在Bean中,应该只存在一个
java
public enum FieldFill {
    /**
     * 默认不处理
     */
    DEFAULT,
    /**
     * 插入填充字段
     */
    INSERT,
    /**
     * 更新填充字段
     */
    UPDATE,
    /**
     * 插入和更新时都进行填充字段
     */
    INSERT_UPDATE
}