为了账号安全,请及时绑定邮箱和手机立即绑定

进行Update操作时,会将未指定的字段更新为0?

DEBUG==>  Preparing: UPDATE company SET age=?, address=?, salary=? WHERE id = ? 

DEBUG==> Parameters: 12(Integer), 湖南(String), 0(Integer), 20(Integer)

DEBUG<==    Updates: 1

影响记录数: 1

==================================================================================


@RequestMapping("/updateByLambdaWrapper")
public void updateByLambdaWrapper(){
    LambdaUpdateWrapper<CompanyPojo> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
    CompanyPojo companyPojo = new CompanyPojo();
    companyPojo.setAge(12);
    companyPojo.setAddress("湖南");
    lambdaUpdateWrapper.eq(CompanyPojo::getId, 20);
    int update = companyMapper.update(companyPojo, lambdaUpdateWrapper);
    System.out.println("影响记录数: " + update);

}


正在回答

3 回答

我怀疑是你的salary属性,没用引用类型,使用的是基本数据类型,基本数据类型作为成员变量,默认值是0。而引用类型,默认值是null。

0 回复 有任何疑惑可以回复我~

因为你传的那个companyPojo 没有把salary原来的值设值进去,所以他默认你的salary要更新为null,然后可能是你默认的salary是0,所以就给你更新成0了。最好是companyPojo这个替换成null,然后lambdaUpdateWrapper那边用set去作更新。

lambdaUpdateWrapper.eq(CompanyPojo::getId, 20).setAddress("湖南").setAge(12);
 int update = companyMapper.update(null, lambdaUpdateWrapper);

这样你的salary就不会受影响

0 回复 有任何疑惑可以回复我~

salary字段代码实体中并未指定更新为0。。sql语句中却将salary更新成0,,这是为啥鸭? 

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

进行Update操作时,会将未指定的字段更新为0?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信