MybatisPlus的UpdateWrapper和QueryWrapper的区别
查询
测试代码
@Test
public void testWrapper(){
LambdaQueryWrapper<Picture> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(Picture::getEnterpriseCode, "FASTECH_DEV");
lambdaQueryWrapper.eq(Picture::getServerCode, "HL_FIRE_SAFE");
lambdaQueryWrapper.eq(Picture::getId, 296);
List<Picture> pictureList1 = pictureMapper.selectList(lambdaQueryWrapper);
System.out.println("QueryWrapper查询出来的结果:" + pictureList1);
LambdaUpdateWrapper<Picture> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(Picture::getEnterpriseCode, "FASTECH_DEV");
lambdaUpdateWrapper.eq(Picture::getServerCode, "HL_FIRE_SAFE");
lambdaUpdateWrapper.eq(Picture::getId, 296);
List<Picture> pictureList2 = pictureMapper.selectList(lambdaQueryWrapper);
System.out.println("UpdateWrapper查询出来的结果:" + pictureList2);
}
运行结果
结论
对于查询来说,两者基本没啥区别,但是一般查询都是用QueryWrapper
修改
源数据
QueryWrapper测试代码
@Test
public void testWrapper(){
LambdaQueryWrapper<Picture> lambdaQueryWrapper = new LambdaQueryWrapper<>();
Picture picture = new Picture();
picture.setPictureType("111");
lambdaQueryWrapper.eq(Picture::getId, 296);
pictureMapper.update(picture, lambdaQueryWrapper);
}
运行结果
UpdateWrapper测试代码
@Test
public void testWrapper(){
LambdaUpdateWrapper<Picture> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(Picture::getId, 296); // 表示需要修改数据的查询条件,不设置默认修改全部
lambdaUpdateWrapper.set(Picture::getPictureType, "222");
lambdaUpdateWrapper.set(Picture::getEnterpriseCode, null);
pictureMapper.update(null, lambdaUpdateWrapper);
}
运行结果
结论
QueryWrapper可以根据id修改,也可以根据QueryWrapper构建的查询条件进行修改,后者修改传入一个映射实体,而且默认不会把映射实体的空值映射到数据库,如果想将数据库某个属性置空,使用UpdateWrapper