由于项目的需要,查询某产品下某规格的最小价格,本次做了优化
旧版本的实现
MPJLambdaWrapper<GoodWeighDto> wrappers=new MPJLambdaWrapper<GoodWeighDto>()
.selectAll(GoodWeighDto.class)
.eq(GoodWeighDto::getGoodId,e.getGoodId());
List<GoodWeighDto> list2 = goodWeighDtoMapper.selectJoinList(GoodWeighDto.class, wrappers);
//最小值对应的获取
if(CollUtil.isNotEmpty(list2)){
GoodWeighDto minUinPriceObject = list2.stream()
.min(Comparator.comparing(GoodWeighDto::getUniPrice))
.orElse(null); // 如果没有找到最小值,返回null
goodVo.setGoodPrice(minUinPriceObject.getUniPrice());
}
优化后的版本
MPJLambdaWrapper<GoodWeighDto> wrappers = new MPJLambdaWrapper<GoodWeighDto>()
.selectAll(GoodWeighDto.class)
.orderByAsc(GoodWeighDto::getUniPrice)
.eq(GoodWeighDto::getGoodId,e.getGoodId())// 按照UniPrice升序排序
.last("LIMIT 1"); // 只取一条记录
GoodWeighDto cheapestGoodWeighDto = goodWeighDtoMapper.selectOne(wrappers);