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); }
我怀疑是你的salary属性,没用引用类型,使用的是基本数据类型,基本数据类型作为成员变量,默认值是0。而引用类型,默认值是null。
因为你传的那个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就不会受影响
salary字段代码实体中并未指定更新为0。。sql语句中却将salary更新成0,,这是为啥鸭?