Mybatis-plus更新字段update_by失敗問題
問題復現(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 語句也可以看到,這里并沒有更新賦值的當前登錄人的 昵稱
4、查 mp 的 官網(wǎng)
解決方案
使用 LambdaUpdateWrapper 來代替 updateById ,并在 LambdaUpdateWrapper 里面直接進行賦值
案例:
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LambdaUpdateWrapper<Entity> wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(Entity::getUuid, inlay.getUuid()); // 這里自己指定字段的復制,不走 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ù)器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11SpringMVC中控制器返回JSON數(shù)據(jù)的實現(xiàn)
本文主要介紹了SpringMVC中控制器返回JSON數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07