Mybatis-Plus更新時間字段不生效的解決
背景
Mybatis-Plus是在Mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,主要是為簡化開發(fā)。項目的背景是使用的就是Mybatis-Plus,但是在運(yùn)行項目過程中發(fā)現(xiàn)一個問題,當(dāng)使用Mybatis-Plus進(jìn)行數(shù)據(jù)的更新的時候,更新字段沒有按照我們所預(yù)想的進(jìn)行對應(yīng)的時間的更新。
創(chuàng)建這個字段的語句如下所示:
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間'
原因分析
使用Mybatis-Plus的更新方法,進(jìn)行對應(yīng)數(shù)據(jù)實體的更新,比如使用如下方法:
XXX.updateById() // ....... 等等方法
這些方法使用之后,發(fā)現(xiàn)沒有對updateTime字段數(shù)據(jù)進(jìn)行更新。
原因分析:
當(dāng)selectByld從數(shù)據(jù)庫取出舊數(shù)據(jù),然后修改自己想修改的字段后調(diào)用updateById,會發(fā)現(xiàn)updateTime字段不會更新,這是因為selectByld可以取出updateTime的舊值,更新時填充策路會判斷屬性已有值,不進(jìn)行自動填充,因此updateTime不會自動更新。而且官方目前沒有直接提供強(qiáng)制更新的方法。
查看fillStrategy方法源碼,我們也可以看到只有屬性沒有被填充值,才會執(zhí)行set方法。
解決辦法
解決方法一
更新時設(shè)置更新時間
TDZopenOrder openOrder = openOrderService.getById(orderId); openOrder.setOrderId(washOrderId); openOrder.setUpdateTime(LocalDateTime.now()); openOrder.updateById()
解決方法二
實體上設(shè)置更新時間
public class TDZopenOrder { @ApiModelProperty("更新時間") @TableField(update = "now()") private LocalDateTime updateTime; }
推薦使用方法二,這樣不用每次都取設(shè)置更新時間,簡化代碼?。?!
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring中@ExceptionHandler注解的工作原理詳解
這篇文章主要介紹了Spring中@ExceptionHandler注解的工作原理詳解,Spring Web注解@ExceptionHandler可以用來指定處理某類異常的控制器方法,從而在這些異常發(fā)生時,會有相應(yīng)的控制器方法來處理此類異常,需要的朋友可以參考下2024-01-01SpringBoot 項目使用hutool 工具進(jìn)行 http 接口調(diào)用的處理方
在實際的開發(fā)過程中一個互聯(lián)網(wǎng)的項目來說 ,有可能會涉及到調(diào)用外部接口的實際業(yè)務(wù)場景,下面通過本文給大家介紹SpringBoot 項目 使用hutool 工具進(jìn)行 http 接口調(diào)用的處理方法,需要的朋友可以參考下2022-06-06Mybatis?MappedStatement類核心原理詳解
這篇文章主要介紹了Mybatis?MappedStatement類,mybatis的mapper文件最終會被解析器,解析成MappedStatement,其中insert|update|delete|select每一個標(biāo)簽分別對應(yīng)一個MappedStatement2022-11-11Java 隊列實現(xiàn)原理及簡單實現(xiàn)代碼
這篇文章主要介紹了Java 隊列實現(xiàn)原理及簡單實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10Spring Boot應(yīng)用配置常用相關(guān)視圖解析器詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot應(yīng)用配置常用相關(guān)視圖解析器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12