解决mybatisPlus使用更新操作时属性无法设置null值:
1.在使用mybatisPlus 中的updateById 是如果修改int/integer 类型的数据为空,则修改失败。
办法:使用update方法
@Override
public void update(User user) {
UpdateWrapper<user> wrapper = new UpdateWrapper<>();
if(user.getAge() == null){
wrapper.set("age",user.getAge());
}
wrapper.eq("id", user.getId());
userlMapper.update(user, wrapper);
}
2.在使用mybatisPlus 中的updateById 是如果修改String 类型的数据为null,则修改失败。
办法:使用update方法(上面问题1也可以使用此方法)
@Override
public void update(User user) {
UpdateWrapper<user> wrapper = new UpdateWrapper<>();
//列出所有需要更新的字段
wrapper.set("name",material.getName())
.set("sex",material.getSex())
.set("age",user.getAge)
.set("updateYmd",new Date())
.eq("id", user.getId()); //根据此字段修改
userlMapper.update(null, wrapper);
}
另一种解决办法:
在实体类对应字段上添加注解
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String name;