Mybatis-plus 更新字段 update_by 失败

1,问题复现

1,实体类字段

@TableField(value = "update_by",updateStrategy = FieldStrategy.IGNORED)
private String updateBy;

2,Debug查看原因

在这里插入图片描述
在这里插入图片描述

3,查看执行 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), 外协工厂(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

根据执行的 sql 语句也可以看到,这里并没有更新赋值的当前登录人的 昵称

4,查 mp 的 官网

在这里插入图片描述

2,解决方案

使用 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 是查询出的数据库信息实体类
    entityMapper.update(entity, wrapper);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值