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

關(guān)于Mybatis-Plus字段策略與數(shù)據(jù)庫自動更新時間的一些問題

 更新時間:2020年10月15日 10:03:19   作者:Fearlessroy  
這篇文章主要介紹了關(guān)于Mybatis-Plus字段策略與數(shù)據(jù)庫自動更新時間的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

字段策略 0:”忽略判斷”,1:”非 NULL 判斷”),2:”非空判斷”

問題描述

當字段策略為 0 “忽略判斷” 的時候,如果實體和數(shù)據(jù)庫有字段是需要自動更新的,例如update_time,更新某條記錄的時候自動刷新update_time,理論上我們在業(yè)務(wù)控制的時候是不需要設(shè)置update_time的,利用數(shù)據(jù)庫特性就好,但是在該字段策略下,業(yè)務(wù)邏輯要更新字段(沒有主動設(shè)置 update_time),這時候因為忽略判斷,數(shù)據(jù)庫(我這里是MySql)是不會去更新update_time的,即使這個字段在數(shù)據(jù)庫中是這樣定義的:update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE,在這種字段策略下,該字段會被設(shè)為null,具體的執(zhí)行語句時insert into table(….,update_time) values(…,null)。

解決方法

實現(xiàn)MetaObjectHandler的insertFill()方法和updateFill()方法

@Component    
public class MyMetaObjectHandler extends MetaObjectHandler {   
//新增填充  
@Override   
public void insertFill(MetaObject metaObject){  
 // 獲取當前時間,自動更新以下數(shù)據(jù)庫字段    
 setFieldValByName("updateTime", new Date(), metaObject);   
}  
//更新填充  
@Override   
public void updateFill(MetaObject metaObj ct) {   
 // 獲取當前時間,自動更新以下數(shù)據(jù)庫字段   
 setFieldValByName("updateTime", new Date(), metaObject);   
}   
}

新增一個Component,繼承MetaObjectHandler,重寫 insertFill()和updateFill()兩個方法,自定義插入和更新規(guī) 則,繼承基類中的這兩個方法都為空。

注意這種方式只會在使用Mybatis-plus封裝好的方法時才會有 效,使用自己定義的service并不會生效,這是個坑,所以這種 方式我并不推薦。

將字段策略設(shè)為 2 “非空判斷”

這時候,無論是插入還是更新語句都只會完成對已設(shè)置具體值得屬性進行操作。例如:表中除了update_time以外,還有user_name字段,我們在代碼中設(shè)置了這個字段的值,那么在insert的時候執(zhí)行的語句是: insert into table (user_name) valuse(userName),而不會去對沒有設(shè)置值得字段做任何操作,這樣,有關(guān)時間的字段就可以直接交給數(shù)據(jù)庫了。

字段策略為 ““非空判斷”” 的一個問題

假設(shè)有個Entity User,這個Entity屬性沒有默認值,我們 new 一個實例,User user = new User(),然后啥也沒做,調(diào)用UserService.insert(),這時候就會出現(xiàn)一個問題,Mybatis-plus不知道你想插入哪些值,因為沒有顯示setter,這是一個需要注意的問題。

到此這篇關(guān)于關(guān)于Mybatis-Plus字段策略與數(shù)據(jù)庫自動更新時間的一些問題的文章就介紹到這了,更多相關(guān)Mybatis-Plus 字段策略內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot如何整合FreeMarker模板引擎

    Spring Boot如何整合FreeMarker模板引擎

    這篇文章主要介紹了Spring Boot如何整合FreeMarker模板引擎,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • SpringBoot用JdbcTemplates操作Mysql實例代碼詳解

    SpringBoot用JdbcTemplates操作Mysql實例代碼詳解

    JdbcTemplate是Spring框架自帶的對JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對數(shù)據(jù)庫的操作更加方便、友好,效率也不錯,這篇文章主要介紹了SpringBoot用JdbcTemplates操作Mysql
    2022-10-10
  • SpringBoot利用Redis解決海量重復(fù)提交問題

    SpringBoot利用Redis解決海量重復(fù)提交問題

    本文主要介紹了SpringBoot利用Redis解決海量重復(fù)提交問題,介紹了三種常見的解決方案,包括使用Redis計數(shù)器,使用Redis分布式鎖和使用Redis發(fā)布/訂閱機制,感興趣的可以了解一下
    2024-03-03
  • Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解

    Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解

    Java的synchronized關(guān)鍵字用于修飾線程同步,用以線程資源共享的目的等,下面就帶來簡單的Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解
    2016-06-06
  • 在SpringBoot環(huán)境中使用Mockito進行單元測試的示例詳解

    在SpringBoot環(huán)境中使用Mockito進行單元測試的示例詳解

    Mockito特別適用于在Spring Boot環(huán)境中進行單元測試,因為它能夠輕松模擬Spring應(yīng)用中的服務(wù)、存儲庫、客戶端和其他組件,通過使用Mockito,開發(fā)者可以模擬外部依賴,從而使單元測試更加獨立和可靠,本文給大家介紹了在Spring Boot環(huán)境中使用Mockito進行單元測試
    2024-01-01
  • 什么是RESTful?API,有什么作用

    什么是RESTful?API,有什么作用

    提到RESTful?API大家勢必或多或少聽說過,但是什么是RESTful?API??如何理解RESTful?API?呢?今天咱們就來聊聊這個RESTful?API
    2023-11-11
  • java返回的List進行add操作報錯

    java返回的List進行add操作報錯

    本文主要介紹了java返回的List進行add操作報錯,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 詳解通過maven運行項目的兩種方式

    詳解通過maven運行項目的兩種方式

    這篇文章主要介紹了通過maven運行項目的兩種方式,給大家提到了通過tomcat的方式來啟動maven項目的方法,通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • Spring核心IoC和AOP的理解

    Spring核心IoC和AOP的理解

    本文主要介紹了Spring核心IoC和AOP的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • Java中使用Hutool的DsFactory操作多數(shù)據(jù)源的實現(xiàn)

    Java中使用Hutool的DsFactory操作多數(shù)據(jù)源的實現(xiàn)

    在Java開發(fā)中,管理多個數(shù)據(jù)源是一項常見需求,Hutool作為一個全能的Java工具類庫,提供了DsFactory工具,幫助開發(fā)者便捷地操作多數(shù)據(jù)源,感興趣的可以了解一下
    2024-09-09

最新評論