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

Mybatis-Plus中的MetaObjectHandler組件的使用

 更新時間:2024年10月11日 10:28:28   作者:丿似錦  
MetaObjectHandler是Mybatis-Plus中一個實用組件,專門用于自動處理實體對象中的特定字段,如創(chuàng)建時間、更新時間、創(chuàng)建人和修改人等,該接口允許開發(fā)者在不修改業(yè)務代碼的情況下,實現(xiàn)自動填充功能,極大地簡化了代碼的復雜性,感興趣的可以了解一下

簡介

MetaObjectHandler 是一個非常有用的組件,用于處理實體對象中的字段填充邏輯,比如自動填充創(chuàng)建時間、更新時間、創(chuàng)建人、修改人等字段。

設計理念

在現(xiàn)代應用程序中,數(shù)據(jù)庫記錄的維護常常涉及到類似于“創(chuàng)建時間”、“更新時間”等公共字段。如果在每次插入或更新操作中都手動處理這些字段,不僅容易出錯,還增加了代碼的冗余。MetaObjectHandler 的設計初衷正是為了簡化這一過程,使得這些公共字段的處理變得自動化和無感知。

自動填充的優(yōu)勢

自動填充不僅減少了代碼的冗余,還提高了數(shù)據(jù)的一致性和完整性。通過自動填充,開發(fā)者可以確保每次數(shù)據(jù)庫操作都遵循相同的規(guī)則,避免了人為錯誤。此外,自動填充還可以提高開發(fā)效率,使開發(fā)者能夠?qū)W⒂跇I(yè)務邏輯的實現(xiàn)。

組件介紹

MetaObjectHandler 接口允許在不修改業(yè)務代碼的情況下,對實體類中的字段進行自動填充。這通常用于記錄創(chuàng)建時間、更新時間、創(chuàng)建人、修改人等元數(shù)據(jù)信息。例如,在用戶注冊時自動設置創(chuàng)建時間,在更新用戶信息時自動更新最后修改時間。

此處實現(xiàn)自動填充創(chuàng)建人、修改人
創(chuàng)建時間、修改時間等交給MySQL進行自動填充

MetaObjectHandler 提供了以下核心方法:

  • void insertFill(MetaObject metaObject): 處理插入時的字段自動填充。
  • void updateFill(MetaObject metaObject): 處理更新時的字段自動填充。
  • MetaObjectHandler setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject): 用于設置指定字段的值。
  • Object getFieldValByName(String fieldName, MetaObject metaObject): 獲取指定字段的值。
  • TableInfo findTableInfo(MetaObject metaObject): 根據(jù) MetaObject 獲取對應的表信息。

默認實現(xiàn)

MyBatis-Plus 提供了 MetaObjectHandler 的默認實現(xiàn)類。開發(fā)者可以通過繼承該類,來定制插入和更新時的字段填充邏輯。

嚴格填充策略

默認情況下,MetaObjectHandler 遵循嚴格填充策略,這意味著在字段已有值的情況下不會覆蓋該值,而是在字段為空時才進行填充。這種策略保證了數(shù)據(jù)的一致性,并防止不必要的覆蓋。

使用

實現(xiàn) MetaObjectHandler 接口:
首先需要創(chuàng)建一個類實現(xiàn) MetaObjectHandler 接口,并重寫其中的方法。

package com.zk.app.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.zk.app.utils.UserThreadLocalUtil;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

/**
 * @program: ZK
 * @description: 自定義mubatisplust填充
 * @author: zk
 * @create: 2024-07-17 11:30
 **/
@Component
public class ZKMetaObjectHandler implements MetaObjectHandler {
    /**
     * 創(chuàng)建人字段
     */
    private static final String CREATE_USER_ID = "createUserId";
    /**
     * 修改人字段
     */
    private static final String UPDATE_USER_ID = "updateUserId";

    @Override
    public void insertFill(MetaObject metaObject) {
        this.setUserId(metaObject, true);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setUserId(metaObject, false);
    }

    private void setUserId(MetaObject metaObject, boolean isInsert) {
        Long userId = UserThreadLocalUtil.getUserId();
        if (userId > 0) {
            if (isInsert) {
                this.setFieldValByName(CREATE_USER_ID, userId, metaObject);
            }
            this.setFieldValByName(UPDATE_USER_ID, userId, metaObject);
        }
    }
}

通過insertFill與updateFill在新增/更新時進行自動填充
UserThreadLocalUtil為ThreadLocal,主要為存儲當前線程的用戶信息

到此這篇關于Mybatis-Plus中的MetaObjectHandler組件的使用的文章就介紹到這了,更多相關Mybatis-Plus MetaObjectHandler 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • 如何在Java中讀取resources下的文件及資源路徑

    如何在Java中讀取resources下的文件及資源路徑

    本文介紹了如何在Java中讀取resources下的文件以及獲取resource文件的路徑,通過使用ClassLoader或Class的getResourceAsStream方法,可以輕松地讀取resources目錄下的文件,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • Java設計模式之單例模式深入探索

    Java設計模式之單例模式深入探索

    單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。這種類型的設計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式,這種模式涉及到一個單一的類,該類負責創(chuàng)建自己的對象,同時確保只有單個對象被創(chuàng)建
    2021-10-10
  • centos下編譯安裝mysql報錯解決方案

    centos下編譯安裝mysql報錯解決方案

    今天在centos6.2下面源碼編譯安裝mysql的時,在編譯mysql的時候報了一個蛋蛋的錯誤,本文提供詳細解決方案
    2012-11-11
  • java實現(xiàn)Flappy Bird游戲源代碼

    java實現(xiàn)Flappy Bird游戲源代碼

    這篇文章主要為大家詳細介紹了java實現(xiàn)Flappy Bird游戲源代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Struts2 文件上傳進度條的實現(xiàn)實例代碼

    Struts2 文件上傳進度條的實現(xiàn)實例代碼

    本篇文章主要介紹了Struts2 文件上傳進度條的實現(xiàn)實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java中自定義類的實現(xiàn)詳解

    Java中自定義類的實現(xiàn)詳解

    自定義類是Java中最基本、也是最重要的組成部分之一,使用者可以根據(jù)需求創(chuàng)建自己的數(shù)據(jù)類型,從而更加高效地構建程序,本文就來為大家詳細講講Java中自定義類的實現(xiàn)與使用吧
    2023-05-05
  • Java Pattern和Matcher字符匹配方式

    Java Pattern和Matcher字符匹配方式

    這篇文章主要介紹了Java Pattern和Matcher字符匹配方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java實現(xiàn)簡單的銀行管理系統(tǒng)的示例代碼

    Java實現(xiàn)簡單的銀行管理系統(tǒng)的示例代碼

    這篇文章主要介紹了如何利用Java實現(xiàn)簡單的銀行管理系統(tǒng),可以實現(xiàn)存款,取款,查詢等功能,文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-09-09
  • springboot中使用ConstraintValidatorContext驗證兩個字段內(nèi)容相同

    springboot中使用ConstraintValidatorContext驗證兩個字段內(nèi)容相同

    開發(fā)修改密碼功能時,通過ConstraintValidator校驗新密碼和確認新密碼的一致性,首先定義Matches注解和DTO對象,然后創(chuàng)建MatchesValidator類實現(xiàn)驗證邏輯,對springboot驗證字段內(nèi)容相同問題感興趣的朋友一起看看吧
    2024-10-10
  • SpringBoot整合Mybatis-plus關鍵詞模糊查詢結果為空

    SpringBoot整合Mybatis-plus關鍵詞模糊查詢結果為空

    SpringBoot整合Mybatis-plus使用關鍵詞模糊查詢的時候,數(shù)據(jù)庫中有數(shù)據(jù),但是無法查找出來,本文就來介紹一下SpringBoot整合Mybatis-plus關鍵詞模糊查詢結果為空的解決方法
    2025-04-04

最新評論

丁青县| 东港市| 屯留县| 根河市| 锡林郭勒盟| 澄迈县| 边坝县| 安岳县| 大庆市| 峨眉山市| 镇平县| 宾川县| 辽中县| 泗洪县| 溧阳市| 南汇区| 赣榆县| 桃江县| 清丰县| 巴楚县| 西乡县| 温泉县| 句容市| 昭觉县| 甘洛县| 八宿县| 哈尔滨市| 江都市| 大安市| 斗六市| 夏津县| 门头沟区| 桓仁| 江安县| 偃师市| 江永县| 金溪县| 门头沟区| 木兰县| 聂拉木县| 义乌市|