mybatisPlus不能赋null值

今天在改bug时,想要将实体类中的一个值改为null(原本是有值的),结果却发现编辑成功之后,数据却没有变化,如下:

@TableField(jdbcType = JdbcType.NUMERIC,updateStrategy = FieldStrategy.IGNORED)

mybatisPlus不能赋null值_第1张图片

 我想将bornData这个字段赋值为null,根据原本猜想执行

baseMapper.updateById(sysUserInfo)就可以完成,但事实并非如此,查看控制台打印sql:
==>  Preparing: UPDATE sch_sys_user SET school_id=?, username=?, password=?, mobile=?, sex=?, role_id=?, status=?, del_status=?, create_date=?, update_date=?, delete_flag=? WHERE Id=? 
==> Parameters: 6(Integer), 嘻嘻嘻(String), b46fc7bf5e1394a1791278345583032f(String), 18800009876(String), 1(Integer), 22(Integer), 0(Integer), 0(Integer), 2022-08-26T14:13:44(LocalDateTime), 2022-08-27T15:53:04.344(LocalDateTime), 0(Integer), 155(Integer)
<==    Updates: 1

发现其并没有修改该字段值,后来发现updateById方法,但是updateById默认不更新为null的值。

在字段上加上如下注解:

@TableField(jdbcType = JdbcType.NUMERIC,updateStrategy = FieldStrategy.IGNORED)

updateStrategy 是修改策略,默认为NOT_NULL,不能为null,,更改为IGNORED 即可忽略赋值null。

但是由于赋null,无法判读类型,所以需要为字段指定类型 jdbcType = JdbcType.NUMERIC

 

再次执行发现其sql打印如下:

==>  Preparing: UPDATE sch_sys_user SET school_id=?, username=?, password=?, mobile=?, born_date=?, sex=?, role_id=?, status=?, del_status=?, create_date=?, update_date=?, delete_flag=? WHERE Id=? 
==> Parameters: 6(Integer), 嘻嘻嘻(String), b46fc7bf5e1394a1791278345583032f(String), 18800009876(String), null, 1(Integer), 22(Integer), 0(Integer), 0(Integer), 2022-08-26T14:13:44(LocalDateTime), 2022-08-27T16:00:13.272(LocalDateTime), 0(Integer), 155(Integer)
<==    Updates: 1

 修改成功。

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