Mybatis-plus更新字段update_by失敗問題
問題復(fù)現(xiàn)
1、實體類字段
@TableField(value = "update_by",updateStrategy = FieldStrategy.IGNORED) private String updateBy;
2、Debug查看原因
3、查看執(zhí)行 sql
==> Preparing: UPDATE t_inlay SET inlay_identity=?, document_num=?, inlay_code=?, inlay_name=?, production_plant_id=?, production_plant_name=?, production_network_id=?, production_network_name=?, create_by=?, create_id=?, update_id=?, create_time=?, update_by=?, update_time=? WHERE id=? AND del_flag='0'
==> Parameters: 8a8ad19f8d4394b9018d4394b9070000(String), GEM20240126102356000125(String), 1035(String), wang-test233(String), 130001(String), 東莞美和珠寶(String), 13(String), 外協(xié)工廠(String), wang(String), 1750704368974766082(String), 1750704368974766082(String), 2024-01-26 10:23:57.0(Timestamp), 930225(String), 2024-01-26 14:33:55.564(Timestamp), 25(Integer)
<== Updates: 1
根據(jù)執(zhí)行的 sql 語句也可以看到,這里并沒有更新賦值的當(dāng)前登錄人的 昵稱
4、查 mp 的 官網(wǎng)
解決方案
使用 LambdaUpdateWrapper 來代替 updateById ,并在 LambdaUpdateWrapper 里面直接進行賦值
案例:
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LambdaUpdateWrapper<Entity> wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(Entity::getUuid, inlay.getUuid()); // 這里自己指定字段的復(fù)制,不走 mp 的填充策略 wrapper.set(Entity::getUpdateBy, loginUser.getRealname()); inlay.setUpdateTime(new Date()); inlay.setUpdateBy(loginUser.getRealname()); inlay.setUpdateId(loginUser.getId()); // entity 是查詢出的數(shù)據(jù)庫信息實體類 entityMapper.update(entity, wrapper);
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot中application.yml多環(huán)境生效規(guī)則說明
這篇文章主要介紹了springboot中application.yml多環(huán)境生效規(guī)則說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07如何使用HttpClient發(fā)送java對象到服務(wù)器
這篇文章主要介紹了如何使用HttpClient發(fā)送java對象到服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11SpringMVC中控制器返回JSON數(shù)據(jù)的實現(xiàn)
本文主要介紹了SpringMVC中控制器返回JSON數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Java如何跳出當(dāng)前的多重嵌套循環(huán)的問題
Java中的循環(huán)結(jié)構(gòu)包括for循環(huán)、while循環(huán)、do-while循環(huán)和增強型for循環(huán),每種循環(huán)都有其適用場景,在循環(huán)中,break、continue和return分別用于跳出循環(huán)、跳過當(dāng)前循環(huán)和結(jié)束當(dāng)前方法,對于多重嵌套循環(huán)2025-01-01