开发者

Mybatis-plus更新字段update_by失败问题

开发者 https://www.devze.com 2024-09-23 10:35 出处:网络 作者: ꧁এ悲宸๓₯㎕
目录问题复现1、实体类字段2、Debug查看原因3、查看执行 sql4、查 mp 的 官网解决方案总结问题复现
目录
  • 问题复现
    • 1、实体类字段
    • 2、Debug查看原因
    • 3、查看执行 sql
    • 4、查 mp 的 官网
  • 解决方案
    • 总结

      问题复现

      1、实体类字段

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

      2、Debug查看原因

      Mybatis-plus更新字段update_by失败问题

      Mybatis-plus更新字段update_by失败问题

      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=? WHERhttp://www.devze.comE 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(Strandroiding), 2024-01-2js6 14:33:55.564(Timestamp), 25(Integer)

      <==    Updates: 1

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

      4、查 mp 的 官网

      Mybatis-plus更新字段update_by失败问题

      解决方案

      使用 LambdaUpdateWrapper 来代替 updateById ,并在 LambdaUpdateWrapper 里面直接进行赋值

      案例:

          LoginUser loginUser = (Lowww.devze.comginUser) 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);
      php

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消