MyBatis-Plus updateById方法无法更新字段为空字符串或null

冷不防 2023-10-02 14:24 136阅读 0赞

需求 :

举例 : 当前员工表有入职和离职日期,离职后更新当前时间,再入职时更新入职时间并清空离职日期

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA5YCU5by655S35a2p5YS_size_20_color_FFFFFF_t_70_g_se_x_16

解决方法 :

方法一 : 修改配置文件

MyBatis-Plus对字段的验证策略默认是1

  1. field-strategy字段更新插入策略属性说明:
  2. IGNORED(0): "忽略判断", 所有字段都更新和插入
  3. NOT_NULL(1): "非 NULL 判断", 只更新和插入非NULL
  4. NOT_EMPTY(2): "非空判断", 只更新和插入非NULL值且非空字符串
  5. DEFAULT:默认NOT_NULL

修改field-strategy字段验证的值为0

  1. mybatis-plus:
  2. global-config:
  3. #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
  4. field-strategy: 0

方法二 : 对需要的字段的验证策略进行修改

  1. @ApiModelProperty(value = "入职时间")
  2. @TableField(value = "hire_date",strategy = FieldStrategy.IGNORED)
  3. private java.util.Date hireDate;

方法三 : 使用update方法

  1. @Override
  2. public void updateMain(BEmEmployee bEmEmployee) {
  3. LambdaUpdateWrapper<BEmEmployee> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
  4. if (bEmEmployee.getLeaveDate()==null){
  5. lambdaUpdateWrapper.set(BEmEmployee::getLeaveDate,null);
  6. }
  7. // where条件
  8. lambdaUpdateWrapper.eq(BEmEmployee::getId,bEmEmployee.getId());
  9. bEmEmployeeViewMapper.update(bEmEmployee,lambdaUpdateWrapper);
  10. }

发表评论

表情:
评论列表 (有 0 条评论,136人围观)

还没有评论,来说两句吧...

相关阅读