溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mybatis-Plus3.2.0 MetaObjectHandler 無法進(jìn)行公共字段全局填充怎么辦

發(fā)布時(shí)間:2021-07-14 11:09:28 來源:億速云 閱讀:175 作者:小新 欄目:編程語言

這篇文章主要介紹了Mybatis-Plus3.2.0 MetaObjectHandler 無法進(jìn)行公共字段全局填充怎么辦,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

問題描述

最近在做的這個(gè)項(xiàng)目架構(gòu)組對(duì)于配置文件決定,采取的是 .xml 配置文件

一個(gè)數(shù)據(jù)中臺(tái)項(xiàng)目,因?yàn)椴渴瓠h(huán)境比較復(fù)雜,可能需要適配阿里、騰訊、開源等環(huán)境和機(jī)房,所以配置文件和啟動(dòng)類為三類

之前寫的 MetaObjectHandler 都是采用的 SpringBoot 配置方式開發(fā),突然換成 .xml 配置文件,還是有不少坑的,其中就有配置的 MetaObjectHandler 死活不起作用 ???(上火)

問題代碼

這種方式放在 平常 SpringBoot 項(xiàng)目中,一點(diǎn)毛病沒有…

@Component
public class MybatisPlusObjectHandler implements MetaObjectHandler {

  @Override
  public void insertFill(MetaObject metaObject) {
    Date now = new Date();

    Object crteTime = getFieldValByName("crteTime", metaObject);
    if (Objects.isNull(crteTime)) {
      setFieldValByName("crteTime", now, metaObject);
    }

    Object optTime = getFieldValByName("optTime", metaObject);
    if (Objects.isNull(optTime)) {
      setFieldValByName("optTime", now, metaObject);
    }

    setFieldValByName("invdFlag", TpcConstant.INVD, metaObject);
  }

  @Override
  public void updateFill(MetaObject metaObject) {
    Object optTime = getFieldValByName("optTime", metaObject);
    if (Objects.isNull(optTime)) {
      setFieldValByName("optTime", new Date(), metaObject);
    }
  }
}

解決方式

將 MybatisPlusObjectHandler 類上的 @Component 去掉,換成在 .xml 中注冊(cè)

<bean class="xxx.xxx.xxx.MybatisPlusObjectHandler" id="myMetaObjectHandler"/>

  <bean id="globalConfiguration" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
    <property name="metaObjectHandler" ref="myMetaObjectHandler"/>
  </bean>

  <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    <!-- 注入公共字段填充處理器 -->
    <property name="globalConfig" ref="globalConfiguration" />
  </bean>

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Mybatis-Plus3.2.0 MetaObjectHandler 無法進(jìn)行公共字段全局填充怎么辦”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI