0
点赞
收藏
分享

微信扫一扫

MyBatis-Plus updateById方法更新不了空字符串null解决方法

_鱼与渔_ 2022-03-30 阅读 173

1 问题描述

在用mybatis-plus封装的updateById方法来更新数据时,想把一个字段设置为null值,但是发现更新后数据没有为null还是原来的值,这是因为mybatis-plus在更新的时候做了null判断,默认不更新为null的传参。

2 解决方法

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

/**
 * 治愈时间
 */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private LocalDate cureData;

(2)使用update方法显式的设置允许空数据的字段值(推荐

@Override
public void save(DrugRegisterBo drugRegisterBo) {
    DrugRegisterBean drugRegisterBean = modelMapper.map(drugRegisterBo, DrugRegisterBean.class);
    if (drugRegisterBean.getId() == null) {
        drugRegisterMapper.insert(drugRegisterBean.setCreatetime(LocalDateTime.now()).setModifytime(LocalDateTime.now()));
    } else {
        drugRegisterMapper.update(drugRegisterBean, Wrappers.<DrugRegisterBean>lambdaUpdate()
                .eq(DrugRegisterBean::getId, drugRegisterBean.getId())
                .set(DrugRegisterBean::getProductDate, drugRegisterBean.getProductDate())
                .set(DrugRegisterBean::getValidDate, drugRegisterBean.getValidDate())
                .set(DrugRegisterBean::getSpecifications, drugRegisterBean.getSpecifications())
                .set(DrugRegisterBean::getUseMethod, drugRegisterBean.getUseMethod())
                .set(DrugRegisterBean::getContent, drugRegisterBean.getContent())
        );
    }
}
举报

相关推荐

0 条评论