實(shí)例詳解MyBatis-plus自動填充功能
什么是自動填充
有些表中會有更新時(shí)間、創(chuàng)建時(shí)間、更新人或者創(chuàng)建人這些字段。
每次對數(shù)據(jù)進(jìn)行新增、刪除、修改時(shí)都需要對這些字段進(jìn)行設(shè)置。傳統(tǒng)的做法是在進(jìn)行這些操作前,對Entity的字段進(jìn)行set設(shè)置,然后再進(jìn)行操作。這種做法不僅容易忘記導(dǎo)致出錯(cuò)、而且代碼會顯得特別冗余。
雖然新增時(shí)間和修改時(shí)間可以使用數(shù)據(jù)庫的時(shí)間,但是新增人和修改人就不能使用這樣的功能。
所以MP就提供自動填充的功能,幫助自定設(shè)置這些字段的值,提升開發(fā)效率,代碼也會顯得特別優(yōu)雅。
1.這個(gè)功能是做什么的呢?
有的時(shí)候,我們可能有這樣子的需求,在插入(insert)或者更新數(shù)據(jù)(update)的時(shí)候可以自動填充數(shù)據(jù),比如密碼,version等。在mp中為我們提供了這種功能,非常的方便!
2.下面用一個(gè)例子來學(xué)習(xí)這個(gè)功能
2.1添加注解@TableField(),這個(gè)注解里面的fill提供了填充的功能
@TableField(fill = FieldFill.INSERT) //插入時(shí)進(jìn)行填充 private String password;
FirledFill提供了以下幾種模式,根據(jù)情況可以自己進(jìn)行選擇
public enum FieldFill { DEFAULT, //默認(rèn)不進(jìn)行處理 INSERT, //插入的時(shí)候填充字段 UPDATE, //更新的時(shí)候填充字段 INSERT_UPDATE; //插入和更新的時(shí)候填充字段 private FieldFill() { //構(gòu)造方法 } }
2.2編寫MyMetaObjectorHandler,實(shí)現(xiàn)源對象字段填充控制器抽象類,根據(jù)需求實(shí)不同的方法,這里是實(shí)現(xiàn)一個(gè)插入填充的方法
public class MyMetaObjectHandler implements MetaObjectHandler { //插入填充 @Override public void insertFill(MetaObject metaObject) { Object password = getFieldValByName("password", metaObject); if (ObjectUtils.isNull(password)) { setFieldValByName("password", "88888888", metaObject); } } //更新填充 @Override public void updateFill(MetaObject metaObject) { } }
2.3將自定義的MyObjectHandler進(jìn)行bean注入MybatisPlusConfig中
@Configuration public class MybatisPlusConfig { @Bean //插入填充 public MyMetaObjectHandler myMetaObjectHandler(){ return new MyMetaObjectHandler(); } }
3.測試
@Test public void test() { User user = new User(); user.setAge(29); user.setEmail("test@163.com"); user.setUserName("guanyu"); user.setName("關(guān)羽"); user.setAddress("上海"); // user.setPassword("123456"); //將密碼進(jìn)行注釋,如果插入填充生效的話,數(shù)據(jù)庫默認(rèn)就填充了上面的88888888為password的值 int result = userMapper.insert(user); System.out.println("result=" + result); System.out.println(user.getId()); }
4.結(jié)果
綜上所示,自動填充成功。
到此這篇關(guān)于MyBatis-plus自動填充功能的文章就介紹到這了,更多相關(guān)MyBatis-plus自動填充內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MyBatis-Plus自動填充字段的詳細(xì)教程
- Mybatis-Plus實(shí)現(xiàn)公共字段自動填充的項(xiàng)目實(shí)踐
- MyBatis-Plus中自動填充功能的用法示例詳解
- mybatis-plus 新增/修改如何實(shí)現(xiàn)自動填充指定字段
- 使用Mybatis-plus實(shí)現(xiàn)時(shí)間自動填充(代碼直接可用)
- Mybatis-Plus自動填充更新操作相關(guān)字段的實(shí)現(xiàn)
- mybatis-plus自動填充插入更新時(shí)間有8小時(shí)時(shí)差
- MyBatis-Plus 自動填充的實(shí)現(xiàn)示例
相關(guān)文章
Java基于Base64實(shí)現(xiàn)編碼解碼圖片文件
這篇文章主要介紹了Java基于Base64實(shí)現(xiàn)編碼解碼圖片文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03使用Java實(shí)現(xiàn)大小寫轉(zhuǎn)換實(shí)例代碼
最近在開發(fā)項(xiàng)目中遇到一個(gè)比較好用的方法,那就是對字符串中的字母大小進(jìn)行轉(zhuǎn)換,所以下面這篇文章主要給大家介紹了關(guān)于如何使用Java實(shí)現(xiàn)大小寫轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2022-06-06Java List分頁功能實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了Java List分頁功能實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01springboot集成JWT實(shí)現(xiàn)身份認(rèn)證(權(quán)鑒)的方法步驟
本文主要介紹了springboot集成JWT實(shí)現(xiàn)身份認(rèn)證(權(quán)鑒)的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04SpringMVC框架實(shí)現(xiàn)圖片上傳與下載
這篇文章主要為大家詳細(xì)介紹了SpringMVC框架實(shí)現(xiàn)圖片上傳與下載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08