mybatisplus自動填充
阿新 • • 發佈:2020-10-29
mybatisplus自動填充
資料庫表的建立時間、修改時間,這些個操作一遍都是自動化完成的,我們不希望手動更新。這時候自動填充便可以發揮作用了。
1、方式一
資料庫級別(注意:不建議此方式,因為工作中不允許你修改資料庫)
步驟
- 在表中新增欄位create_time, update_time,給欄位賦予預設值,在需要更新的欄位(update_time)選擇更新
- 在實體類增加對應屬性
2、方式二
程式碼級別,建議使用
步驟
-
在實體類需要自動填充的屬性上加註解
package com.yl.bean; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.Date; /** * 使用者實體類 */ @Data @NoArgsConstructor public class User implements Serializable { @TableId(type=IdType.AUTO) private Integer id; private String name; private Integer age; private String email; @TableField(fill = FieldFill.INSERT )//插入資料時更新該欄位 private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE)//插入和修改時更新該欄位 private Date updateTime; }
注意:資料庫要有對應欄位,不會自動給你生成欄位
-
編寫處理器來處理自動填充註解
package com.yl.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.util.Date; /** * 自動填充處理器實現類 */ @Slf4j//配置日誌輸出,也可以不配置 @Component public class MyMetaObjectHandler implements MetaObjectHandler { /** * 插入元物件欄位填充(用於插入時對公共欄位的填充) * * @param metaObject 元物件 */ @Override public void insertFill(MetaObject metaObject) { //日誌輸出 log.info("start insert fill....."); //欄位填充 this.setFieldValByName("createTime",new Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); } /** * 更新元物件欄位填充(用於更新時對公共欄位的填充) * * @param metaObject 元物件 */ @Override public void updateFill(MetaObject metaObject) { //日誌輸出 log.info("start update fill....."); //欄位填充 this.setFieldValByName("updateTime",new Date(),metaObject); } }