在使用mybaits plus 查询数据库的途中碰到了一些问题
想要通过同一个QueryWrapper ,查询两次条件不一样的某一条数据时,如果这样写会出现
QueryWrapper<ReadMeter> qwr1 = new QueryWrapper<>();
qwr1.eq("meter_id", meterId);
qwr1.eq("is_min_guarantee",1);
qwr1.orderByDesc("create_time");
ReadMeter readMeter1 = readMeterService.getOne(qwr1);
qwr1.eq("is_min_guarantee",0);
ReadMeter readMeter2 = readMeterService.getOne(qwr1);
本意是想查询最新的一条is_min_guarantee为1和is_min_guarantee为0的数据,其实在测试运行中发现生成的sql语句第一个是正常的,发现第二个就有问题了,出现了is_min_guarantee = 1 and is_min_guarantee = 0的情况
要想解决这个问题有两种方法
1.在重新创建一个QueryWrapper,当然这样使用的话,会导致对象创建多了一个的情况,这里的代码我就忽略,直接上第二种方法的代码
2.就是使用QueryWrapper里面封装的clear()方法,将之前的条件清空,然后输入新的查询条件。
QueryWrapper<ReadMeter> qwr1 = new QueryWrapper<>();
qwr1.eq("meter_id", meterId);
qwr1.eq("is_min_guarantee",1);
qwr1.orderByDesc("create_time");
ReadMeter readMeter1 = readMeterService.getOne(qwr1);
qwr1.clear();
qwr1.eq("meter_id", meterId);
qwr1.eq("is_min_guarantee",0);
qwr1.orderByDesc("create_time");
ReadMeter readMeter2 = readMeterService.getOne(qwr1);
总结:这样实现即减少了对象的创建有让代码一目了然