👉 mybatis-plus-sample-auto-fill-metainfo
實現元對象處理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
註解填充字段 @TableField(.. fill = FieldFill.INSERT) 生成器策略部分也可以配置!
public class User {
// 注意!這裏需要標記爲填充字段
@TableField(.. fill = FieldFill.INSERT)
private String fillField;
....
}
自定義實現類 MyMetaObjectHandler
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(MyMetaObjectHandler.class);
@Override
public void insertFill(MetaObject metaObject) {
LOGGER.info("start insert fill ....");
this.setFieldValByName("operator", "Jerry", metaObject);//版本號3.0.6以及之前的版本
//this.setInsertFieldValByName("operator", "Jerry", metaObject);//@since 快照:3.0.7.2-SNAPSHOT, @since 正式版暫未發佈3.0.7
}
@Override
public void updateFill(MetaObject metaObject) {
LOGGER.info("start update fill ....");
this.setFieldValByName("operator", "Tom", metaObject);
//this.setUpdateFieldValByName("operator", "Tom", metaObject);//@since 快照:3.0.7.2-SNAPSHOT, @since 正式版暫未發佈3.0.7
}
}
注意事項:
字段必須聲明TableField註解,屬性fill選擇對應策略,該申明告知 Mybatis-Plus 需要預留注入 SQL 字段
填充處理器MyMetaObjectHandler 在 Spring Boot 中需要聲明@Component 注入
必須使用父類的setFieldValByName()或者setInsertFieldValByName/setUpdateFieldValByName方法,否則不會根據註解FieldFill.xxx來區分
public enum FieldFill {
/**
* 默認不處理
*/
DEFAULT,
/**
* 插入填充字段
*/
INSERT,
/**
* 更新填充字段
*/
UPDATE,
/**
* 插入和更新填充字段
*/
INSERT_UPDATE
}
在 GitHub 上編輯此頁
上次更新: 2019-6-14 11:29:00
← 字段類型處理器
Sql 注入器 →