MybatisPlus的自動填充功能使用!
阿新 • • 發佈:2020-10-26
有時我們希望在更新資料的時候,自動完成某些欄位的值的填充,如建立一個實體的時候,自動生成建立時間,更新的時候自動改變更新時間等。
- 在指定欄位標註註解,生成器策略部分也可以配置。
// 建立時間
@TableField(fill = FieldFill.INSERT)
private Date createTime;
// 更新時間
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
public enum FieldFill { /** * 預設不處理 */ DEFAULT, /** * 插入填充欄位 */ INSERT, /** * 更新填充欄位 */ UPDATE, /** * 插入和更新填充欄位 */ INSERT_UPDATE }
- 實現元物件處理介面:
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
@Slf4j @Component public class MyMetaObjectHandler implements MetaObjectHandler { // fieldName 指的是實體類的屬性名,而不是資料庫的欄位名 @Override public void insertFill(MetaObject metaObject) { log.info("start insert fill ...."); this.strictInsertFill( metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill( metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); } @Override public void updateFill(MetaObject metaObject) { log.info("start update fill ...."); this.strictUpdateFill( // 起始版本 3.3.0(推薦) metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 或者 this.strictUpdateFill( // 起始版本 3.3.3(推薦) metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class); } }