Mybatis-Plus更新時間字段不生效的解決
背景
Mybatis-Plus是在Mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,主要是為簡化開發(fā)。項(xiàng)目的背景是使用的就是Mybatis-Plus,但是在運(yùn)行項(xiàng)目過程中發(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ù)實(shí)體的更新,比如使用如下方法:
XXX.updateById() // ....... 等等方法
這些方法使用之后,發(fā)現(xiàn)沒有對updateTime字段數(shù)據(jù)進(jìn)行更新。
原因分析:
當(dāng)selectByld從數(shù)據(jù)庫取出舊數(shù)據(jù),然后修改自己想修改的字段后調(diào)用updateById,會發(fā)現(xiàn)updateTime字段不會更新,這是因?yàn)閟electByld可以取出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í)體上設(shè)置更新時間
public class TDZopenOrder {
@ApiModelProperty("更新時間")
@TableField(update = "now()")
private LocalDateTime updateTime;
}推薦使用方法二,這樣不用每次都取設(shè)置更新時間,簡化代碼?。。?/p>
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring實(shí)現(xiàn)定時任務(wù)的兩種方法詳解
Spring提供了兩種方式實(shí)現(xiàn)定時任務(wù),一種是注解,還有一種就是接口了,這篇文章主要為大家介紹了這兩種方法的具體實(shí)現(xiàn)方法,需要的可以參考下2024-12-12
Spring中@ExceptionHandler注解的工作原理詳解
這篇文章主要介紹了Spring中@ExceptionHandler注解的工作原理詳解,Spring Web注解@ExceptionHandler可以用來指定處理某類異常的控制器方法,從而在這些異常發(fā)生時,會有相應(yīng)的控制器方法來處理此類異常,需要的朋友可以參考下2024-01-01
SpringBoot 項(xiàng)目使用hutool 工具進(jìn)行 http 接口調(diào)用的處理方
在實(shí)際的開發(fā)過程中一個互聯(lián)網(wǎng)的項(xiàng)目來說 ,有可能會涉及到調(diào)用外部接口的實(shí)際業(yè)務(wù)場景,下面通過本文給大家介紹SpringBoot 項(xiàng)目 使用hutool 工具進(jìn)行 http 接口調(diào)用的處理方法,需要的朋友可以參考下2022-06-06
Mybatis?MappedStatement類核心原理詳解
這篇文章主要介紹了Mybatis?MappedStatement類,mybatis的mapper文件最終會被解析器,解析成MappedStatement,其中insert|update|delete|select每一個標(biāo)簽分別對應(yīng)一個MappedStatement2022-11-11
Java 隊(duì)列實(shí)現(xiàn)原理及簡單實(shí)現(xiàn)代碼
這篇文章主要介紹了Java 隊(duì)列實(shí)現(xiàn)原理及簡單實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10
Spring 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

