欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis-Plus中自動填充功能的用法示例詳解

 更新時(shí)間:2022年12月10日 09:32:47   作者:心態(tài)還需努力呀  
有些時(shí)候我們可能會有這樣的需求,插入或者更新數(shù)據(jù)時(shí),希望有些字段可以自動填充數(shù)據(jù),比如密碼、version、注冊時(shí)默認(rèn)的用戶角色等,在MP中提供了這樣的功能,可以實(shí)現(xiàn)自動填充功能,需要的朋友可以參考下

前言

有些時(shí)候我們可能會有這樣的需求,插入或者更新數(shù)據(jù)時(shí),希望有些字段可以自動填充數(shù)據(jù),比如密碼、version、注冊時(shí)默認(rèn)的用戶角色等。在MP中提供了這樣的功能,可以實(shí)現(xiàn)自動填充功能。

下面例子的場景假設(shè):如果用戶在注冊時(shí),只會輸入基本的用戶信息,這是后臺有個(gè)字段為user_role用戶角色,普通用戶注冊的話都會自動以USER值設(shè)置,但這個(gè)值不是用戶輸入的,需要自動填充。

下面我們就根據(jù)這個(gè)假設(shè)來看看該如何實(shí)現(xiàn)這一功能。

一、添加@TableField注解

在持久化User類中,將角色對應(yīng)的屬性上添加注解@TableField(fill= FieldFill.INSERT),INSERT用來插入數(shù)據(jù)時(shí)進(jìn)行填充。如下代碼所示:

//角色
    @TableField(fill= FieldFill.INSERT)//插入數(shù)據(jù)時(shí)進(jìn)行填充
    private String userRole;

當(dāng)然,不只是在插入時(shí)可自動填充。還可設(shè)置在修改時(shí),或者插入修改時(shí)都自動填充的操作。如下圖所示:

二、編寫MyMetaObjectHandler

我們需要編寫MyMetaObjectHandler類,在類下需要繼承MetaObjectHandler接口實(shí)現(xiàn)其方法,在方法內(nèi)編寫要自動填充的字段。

因?yàn)槲覀兪且蕴砑訛槔?,所以這里就直接在insertFill下編寫自動填充的內(nèi)容,如果增加操作傳下來的屬性值為null的話,就要自動讓該屬性值設(shè)置為USER角色。如果有值的話我們不做操作。所以接下來只需要判斷字段是否為空就可以。

代碼如下所示:

package cn.imust.mp.handler;
 
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
 
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        Object userRole=getFieldValByName("userRole",metaObject);
        if(null == userRole){
            //字段為空,可以進(jìn)行填充
            setFieldValByName("userRole","USER",metaObject);
        }
    }
 
    @Override
    public void updateFill(MetaObject metaObject) {
 
    }
}

三、對自動填充進(jìn)行測試

在測試類下編寫testInsert()方法,傳值時(shí)就不需要設(shè)置userRole的值,添加完成后查看是否會自動填充(即查看userRole是否為USER值)

//測試添加方法
    @Test
    public void testInsert(){
        User user=new User();
        user.setUserName("哈哈111");
        user.setUserEmail("12433");
//        user.setUserRole("ADMIN");
        user.setUserStatus("0");
        user.setUserPassword("12344");
 
//        表中沒有字段
        user.setHobby("足球");
        //受影響的行數(shù)  count
        int count = userMapper.insert(user);
        if(count>0){//添加成功
            //輸出所有數(shù)據(jù)
            testSelectList();
        }else {//添加失敗
            System.out.println("添加失敗~");
        }
    }

四、運(yùn)行效果圖

執(zhí)行上述的測試代碼,得到如下圖所示的效果圖,添加成功在查詢會發(fā)現(xiàn)userRole的值會被自動填充成上面設(shè)置的USER即普通用戶的值。 說明測試成功~

總結(jié)

MP中的自動填充功能在實(shí)際中也是經(jīng)常使用的知識點(diǎn),大家要多多練習(xí)掌握,就像開發(fā)中時(shí)用戶輸入的數(shù)據(jù)肯定不會是對應(yīng)數(shù)據(jù)庫表的全部字段,有些字段都需要系統(tǒng)自動填充值,這里就需要自動填充功能來完成。步驟也很簡單,多多練習(xí)兩遍就能夠掌握并且熟練運(yùn)用其知識點(diǎn)。

到此這篇關(guān)于MyBatis-Plus中自動填充功能的用法的文章就介紹到這了,更多相關(guān)MyBatis-Plus自動填充內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java正則多字符串匹配替換

    Java正則多字符串匹配替換

    正則表達(dá)式異常強(qiáng)大,一直理解不深,用的也不深,這次項(xiàng)目中嘗試,體會到了它的強(qiáng)大之處。字符串查找,匹配,替換,正則無不能做,特別是靈活的運(yùn)用子串匹配得到的變量值$1,$2,再進(jìn)行二次處理能夠達(dá)到很巧妙的效果。
    2013-02-02
  • ConditionalOnProperty配置swagger不生效問題及解決

    ConditionalOnProperty配置swagger不生效問題及解決

    這篇文章主要介紹了ConditionalOnProperty配置swagger不生效問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • springboot接口參數(shù)為List的問題

    springboot接口參數(shù)為List的問題

    這篇文章主要介紹了springboot接口參數(shù)為List的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Mybatis中設(shè)置全局變量的方法示例

    Mybatis中設(shè)置全局變量的方法示例

    我們在平時(shí)的工作中有時(shí)候是需要在配置文件中配置全局變量的,我最近工作中就遇到了,所以索性記錄下來,下面這篇文章主要跟大家介紹了關(guān)于Mybatis中設(shè)置全局變量的方法示例,需要的朋友可以參考下。
    2017-07-07
  • Java基于Netty實(shí)現(xiàn)Http server的實(shí)戰(zhàn)

    Java基于Netty實(shí)現(xiàn)Http server的實(shí)戰(zhàn)

    本文主要介紹了Java基于Netty實(shí)現(xiàn)Http server的實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 一起來了解Java的File類和IO流

    一起來了解Java的File類和IO流

    這篇文章主要為大家詳細(xì)介紹了Java?File類和IO流,在Java學(xué)習(xí)中,file類與io流是非常重要的部分,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Skywalking改成適配阿里云等帶Http?Basic的Elasticsearch服務(wù)

    Skywalking改成適配阿里云等帶Http?Basic的Elasticsearch服務(wù)

    這篇文章主要介紹了改造Skywalking支持阿里云等帶Http?Basic的Elasticsearch服務(wù)
    2022-02-02
  • Java基礎(chǔ)之練習(xí)打印三角形

    Java基礎(chǔ)之練習(xí)打印三角形

    這篇文章主要介紹了Java基礎(chǔ)之練習(xí)打印三角形,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • java Servlet 實(shí)現(xiàn)動態(tài)驗(yàn)證碼圖片示例

    java Servlet 實(shí)現(xiàn)動態(tài)驗(yàn)證碼圖片示例

    這篇文章主要介紹了java Servlet 實(shí)現(xiàn)動態(tài)驗(yàn)證碼圖片示例的資料,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。
    2017-02-02
  • Java中JMM與volatile關(guān)鍵字的學(xué)習(xí)

    Java中JMM與volatile關(guān)鍵字的學(xué)習(xí)

    這篇文章主要介紹了通過實(shí)例解析JMM和Volatile關(guān)鍵字的學(xué)習(xí),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09

最新評論