mybatis-puls使用修改语句部分字段不生效

mybatis-puls在使用修改语句的时候,没有报异常,但是修改的部分字段不生效,打印修改的数据语句,发现部分字段传进来的属性值是null,然后mybatis-puls修改的时候,发现这个字段是null,就忽略此字段的修改,但实际上,我们就是需要这个字段修改为null,没有操作成功的原因,是因为mybatis-puls在执行修改时,对字段的验证策略,我们看一下@TableField这个注解

mybatis-puls使用修改语句部分字段不生效_第1张图片

 mybatis-puls使用修改语句部分字段不生效_第2张图片

 在进行修改操作时设置全局的field-strategy,默认的策略是DEFAULT(mybatis-plus版本不一样,FieldStrategy

枚举值也不一致),这个时候进行更改操作的时候,如果属性值为null,则不进行修改,所以就出现了我们操作不成功的情况。

解决这个问题,有三种方式:

1、设置全局的field-strategy

mybatis-plus:
  mapper-locations: classpath:mapper/*Mapper.xml
  global-config:
    # 数据库相关配置
    db-config:
      #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
      field-strategy: not_null

全局性配置,会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null,可能会影响其他业务数据的正确性。

2、对特殊字段设置单独的field-strategy

mybatis-plus  3.0.7版本中,策略字段

 mybatis-plus  3.5.1版本中,策略字段

版本不一致,字段也不一样,要注意区分版本

3、 使用UpdateWrapper方式更新

在mybatis-plus中,除了updateById方法,还提供了一个update方法,直接使用update方法也可以将字段设置为null

你可能感兴趣的:(JAVA,mybatis,java,mysql)