個人記錄:
使用到了Lombok,需要匯入對應的依賴,還需要安裝Lombok插件即可,
一般資料庫表中都會有兩個欄位,分別是創建時間和修改時間,為了方便每次創建或者修改資料時使對應的欄位自動填充,Mybatis-plus就幫我們封裝了自動填充的方法,
表結構:

代碼實作
/** * pojo * 寫一個基礎類,添加創建時間和修改時間的屬性,使用MybatisPlus的注解,屬性fill選擇對應策略,該宣告告知Mybatis-Plus需要預留注入SQL欄位 */ abstract class BasePojo { @TableField(fill = FieldFill.INSERT) //添加資料時,自動填充該欄位 private Date created; @TableField(fill = FieldFill.INSERT_UPDATE) //添加和修改資料時,自動填充該欄位 private Date updated; }
對應表的物體類
@Data @AllArgsConstructor @NoArgsConstructor public class User extends BasePojo { private Long id; private String mobile; private String password; }
此時想要使用MybatisPlus的自動填充功能還需要具體的代碼實作:
@Component public class MyMetaObjectHandler implements MetaObjectHandler { /** * 添加資料時,自動填充created欄位 * @param metaObject 元物件 */ @Override public void insertFill(MetaObject metaObject) { Object created = getFieldValByName("created", metaObject); if (created == null) { //欄位名,填充的值,填充的物件 setFieldValByName("created", new Date(), metaObject); } Object updated = getFieldValByName("updated", metaObject); if (updated == null) { setFieldValByName("updated", new Date(), metaObject); } } /** * 修改資料時,自動填充updated欄位 * @param metaObject 元物件 */ @Override public void updateFill(MetaObject metaObject) { setFieldValByName("updated",new Date(),metaObject); } }
MybatisPlus自動填充的原理:
- 填充原理是直接給物體類的屬性設定值
- MetaObjectHandler提供的默認方法策略是:如果有值則不覆寫,如果值為null則不填充
- 欄位必須宣告TableField注解,屬性fill選擇對應的策略,告知Myabtis-plus需要預留注入SQL的欄位
- 填充處理器MetaObjectHandler在SpringBoot需要宣告@Component或@Bean注入
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251947.html
標籤:Java
下一篇:集合
