mybatis update 不为空的_MyBatis Plus更新对象无法设空值解决方案

原因

因为 MyBatis-Plus 自带的更新方法,都有对对象空值进行判空。只有不为空的字段才会进行数据更新。

解决方式

在实体类对应的字段上加注解@TableField(strategy=FieldStrategy.IGNORED),忽略null值的判断,例如:

@TableField(updateStrategy = FieldStrategy.IGNORED)

private String address;

示例:

1、未加注解(无法设入空值,见代码结果):

//实体private String address;

@Test

public void updateUserTest(){

User user = new User();

user.setId(1);

user.setState((byte) 1);

user.setAddress(null);

userService.updateById(user);

}

//结果

==> Preparing: UPDATE user SET state=? WHERE id=?

==> Parameters: 1(Byte), 1(Integer)

2、加注解(可以设入空值,看代码结果)

//实体@TableField(updateStrategy = FieldStrategy.IGNORED)

private String address;

你可能感兴趣的:(mybatis,update,不为空的)