最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis-Plus中自動(dòng)填充功能的用法示例詳解

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

前言

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

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

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

一、添加@TableField注解

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

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

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

二、編寫MyMetaObjectHandler

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

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

代碼如下所示:

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) {
 
    }
}

三、對(duì)自動(dòng)填充進(jìn)行測(cè)試

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

//測(cè)試添加方法
    @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í)行上述的測(cè)試代碼,得到如下圖所示的效果圖,添加成功在查詢會(huì)發(fā)現(xiàn)userRole的值會(huì)被自動(dòng)填充成上面設(shè)置的USER即普通用戶的值。 說(shuō)明測(cè)試成功~

總結(jié)

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

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

相關(guān)文章

  • java編程兩種樹形菜單結(jié)構(gòu)的轉(zhuǎn)換代碼

    java編程兩種樹形菜單結(jié)構(gòu)的轉(zhuǎn)換代碼

    這篇文章主要介紹了java編程兩種樹形菜單結(jié)構(gòu)的轉(zhuǎn)換代碼,首先介紹了兩種樹形菜單結(jié)構(gòu)的代碼,然后展示了轉(zhuǎn)換器實(shí)例代碼,最后分享了相關(guān)實(shí)例及結(jié)果演示,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • Java 十大排序算法之冒泡排序刨析

    Java 十大排序算法之冒泡排序刨析

    冒泡排序是一種簡(jiǎn)單的排序算法,它也是一種穩(wěn)定排序算法。其實(shí)現(xiàn)原理是重復(fù)掃描待排序序列,并比較每一對(duì)相鄰的元素,當(dāng)該對(duì)元素順序不正確時(shí)進(jìn)行交換。一直重復(fù)這個(gè)過(guò)程,直到?jīng)]有任何兩個(gè)相鄰元素可以交換,就表明完成了排序
    2021-11-11
  • Maven實(shí)現(xiàn)項(xiàng)目構(gòu)建工具

    Maven實(shí)現(xiàn)項(xiàng)目構(gòu)建工具

    本文主要介紹了Maven實(shí)現(xiàn)項(xiàng)目構(gòu)建工具,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • IntelliJ IDEA 2021.1 EAP 1 發(fā)布支持 Java 16 和 WSL 2

    IntelliJ IDEA 2021.1 EAP 1 發(fā)布支持 Java 16 和 WSL 2

    這篇文章主要介紹了IntelliJ IDEA 2021.1 EAP 1 發(fā)布支持 Java 16 和 WSL 2,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • mybatis接收以逗號(hào)分隔的字符串批量查詢方式

    mybatis接收以逗號(hào)分隔的字符串批量查詢方式

    這篇文章主要介紹了mybatis接收以逗號(hào)分隔的字符串批量查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java語(yǔ)言描述Redis分布式鎖的正確實(shí)現(xiàn)方式

    java語(yǔ)言描述Redis分布式鎖的正確實(shí)現(xiàn)方式

    這篇文章主要介紹了java語(yǔ)言描述Redis分布式鎖的正確實(shí)現(xiàn)方式,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Eclipse設(shè)置svn忽略文件或文件夾(svn:ignore)的操作

    Eclipse設(shè)置svn忽略文件或文件夾(svn:ignore)的操作

    這篇文章主要介紹了Eclipse設(shè)置svn忽略文件或文件夾(svn:ignore)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • spring聲明式事務(wù)@Transactional開發(fā)常犯的幾個(gè)錯(cuò)誤及最新解決方案

    spring聲明式事務(wù)@Transactional開發(fā)常犯的幾個(gè)錯(cuò)誤及最新解決方案

    使用聲明式事務(wù)@Transactional進(jìn)行事務(wù)一致性的管理,在開發(fā)過(guò)程中,發(fā)現(xiàn)很多開發(fā)同學(xué)都用錯(cuò)了spring聲明式事務(wù)@Transactional或使用不規(guī)范,導(dǎo)致出現(xiàn)各種事務(wù)問(wèn)題,這篇文章主要介紹了spring聲明式事務(wù)@Transactional開發(fā)常犯的幾個(gè)錯(cuò)誤及解決辦法,需要的朋友可以參考下
    2024-02-02
  • Hibernate實(shí)現(xiàn)悲觀鎖和樂觀鎖代碼介紹

    Hibernate實(shí)現(xiàn)悲觀鎖和樂觀鎖代碼介紹

    這篇文章主要介紹了Hibernate實(shí)現(xiàn)悲觀鎖和樂觀鎖的有關(guān)內(nèi)容,涉及hibernate的隔離機(jī)制,以及實(shí)現(xiàn)悲觀鎖和樂觀鎖的代碼實(shí)現(xiàn),需要的朋友可以了解下。
    2017-09-09
  • Java SpringBoot自定義starter詳解

    Java SpringBoot自定義starter詳解

    大家好,本篇文章主要講的是Java SpringBoot自定義starter詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次
    2022-01-01

最新評(píng)論

康保县| 汉沽区| 林西县| 措勤县| 龙泉市| 上思县| 交口县| 延庆县| 克山县| 铁力市| 东宁县| 板桥市| 乐安县| 白朗县| 阳西县| 古浪县| 方山县| 通渭县| 汉源县| 蓝山县| 格尔木市| 钦州市| 开平市| 江西省| 德保县| 页游| 泸定县| 清水河县| 张家港市| 岐山县| 嘉兴市| 弥渡县| 淮安市| 商南县| 霍林郭勒市| 南召县| 博乐市| 德昌县| 玛多县| 汪清县| 连云港市|