QueryWrapper queryWrapper=new QueryWrapper(); queryWrapper.eq("order_state","已支付"); queryWrapper.eq("check_in_state","已退房");怎么查出list
时间: 2023-07-21 20:44:07 浏览: 118
你可以使用 MyBatis-Plus 提供的 `IService` 接口的 `list()` 方法来查询数据。具体代码如下:
```
List<Order> orderList = orderService.list(new QueryWrapper<Order>()
.eq("order_state", "已支付")
.eq("check_in_state", "已退房"));
```
其中,`Order` 是你的实体类,`orderService` 是你的服务类。这样就可以根据 `order_state` 和 `check_in_state` 的值查询出符合条件的订单列表了。
相关问题
@Override public SdFact checkCodeByLevel2Id(SdFact et) { if(et.getClassifyId() == null || et.getClassifyId().length() == 0) { throw Exp.instance(BizCode.biz_error, "事实表所属类别不能为空!"); } if(et.getTableCode() == null || et.getTableCode().length() == 0) { throw Exp.instance(BizCode.biz_error, "事实表编码不能为空!"); } SdClassify classify = classifyService.getById(et.getClassifyId()); if(classify.getLevel2Id() == null || classify.getLevel2Id().length() == 0) { throw Exp.instance(BizCode.biz_error, "事实表所属类别不能是一级或者二级!"); } QueryWrapper<SdClassify> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("level2_id",classify.getLevel2Id()); List<SdClassify> classifies = classifyService.getMapper().selectList(queryWrapper); if(CollectionUtils.isEmpty(classifies)) { throw Exp.instance(BizCode.biz_error, "事实表所属类别不能是一级或者二级!"); } List<String> classifyIds = classifies.stream().map(o -> o.getId()).collect(Collectors.toList()); QueryWrapper<SdFact> factQueryWrapper = new QueryWrapper<>(); factQueryWrapper.in("classify_id",classifyIds); factQueryWrapper.eq("table_code",et.getTableCode()); if(et.getId() != null) { factQueryWrapper.ne("id",et.getId()); } List<SdFact> facts = this.getMapper().selectList(factQueryWrapper); if(!CollectionUtils.isEmpty(facts)) { throw Exp.instance(BizCode.biz_error, "事实表编码在同一二级分类下不能重复!"); } return et; },多加一个功能,根据表格编码和子分类ID列表查询数据库中是否存在相同分类下的表格编码,若存在,则抛出异常;
根据你提供的代码,我假设你使用的是Java语言和MyBatis-Plus框架来操作数据库。下面是一个示例代码,其中包括了根据表格编码和子分类ID列表查询数据库中是否存在相同分类下的表格编码的功能:
```java
@Override
public SdFact checkCodeByLevel2Id(SdFact et) {
// 首先检查事实表所属类别是否为空
if (et.getClassifyId() == null || et.getClassifyId().length() == 0) {
throw Exp.instance(BizCode.biz_error, "事实表所属类别不能为空!");
}
// 检查事实表编码是否为空
if (et.getTableCode() == null || et.getTableCode().length() == 0) {
throw Exp.instance(BizCode.biz_error, "事实表编码不能为空!");
}
// 获取事实表所属类别信息
SdClassify classify = classifyService.getById(et.getClassifyId());
// 检查事实表所属类别是否是一级或二级分类
if (classify.getLevel2Id() == null || classify.getLevel2Id().length() == 0) {
throw Exp.instance(BizCode.biz_error, "事实表所属类别不能是一级或者二级!");
}
// 查询同一二级分类下的所有子分类信息
QueryWrapper<SdClassify> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("level2_id", classify.getLevel2Id());
List<SdClassify> classifies = classifyService.getMapper().selectList(queryWrapper);
if (CollectionUtils.isEmpty(classifies)) {
throw Exp.instance(BizCode.biz_error, "事实表所属类别不能是一级或者二级!");
}
// 获取同一二级分类下的所有子分类ID
List<String> classifyIds = classifies.stream().map(SdClassify::getId).collect(Collectors.toList());
// 查询是否存在相同分类下的表格编码
QueryWrapper<SdFact> factQueryWrapper = new QueryWrapper<>();
factQueryWrapper.in("classify_id", classifyIds);
factQueryWrapper.eq("table_code", et.getTableCode());
if (et.getId() != null) {
factQueryWrapper.ne("id", et.getId());
}
List<SdFact> facts = this.getMapper().selectList(factQueryWrapper);
if (!CollectionUtils.isEmpty(facts)) {
throw Exp.instance(BizCode.biz_error, "事实表编码在同一二级分类下不能重复!");
}
return et;
}
```
在这个示例代码中,我们首先检查事实表所属类别和编码是否为空,然后获取事实表所属类别信息,并检查其是否为一级或二级分类。接着,我们查询同一二级分类下的所有子分类信息,并获取它们的ID。最后,我们根据分类ID和表格编码查询数据库,如果存在相同分类下的表格编码则抛出异常,否则返回事实表对象。
优化这段代码( ApplyFinanceDTO dto = new ApplyFinanceDTO(); dto.setId(applyNo); Result<ApplyFinanceVO> financeResult = applyFeign.selectInfoById(dto); if(financeResult == null || !financeResult.isSuccess()){ throw new BusinessException("融资申请信息获取失败"); } ApplyFinanceVO financeVO = financeResult.getResult(); QueryWrapper<ContractTemplate> wrapper = new QueryWrapper<>(); wrapper .eq(financeVO.getBusinessType() != null, "BUSINESS_TYPE", financeVO.getBusinessType()) .eq(financeVO.getFundType() != null, "EXCLUSIVE_CODE", financeVO.getFundType()) .eq( "TEMPLATE_STATUS", InitConstants.STRING_1) .or(queryWrapper -> queryWrapper.eq( "IS_UNIVERSAL", InitConstants.STRING_1).eq( "TEMPLATE_STATUS", InitConstants.STRING_1)); wrapper.orderByAsc("ID", "TEMPLATE_ID"); List<ContractTemplate> contractTemplates = contractTemplateService.getBaseMapper().selectList(wrapper); CollectContractParam contractParam = new CollectContractParam(applyNo, contractTemplates, null); List<TemplateParam> templateParamAndValue = createContractService.getTemplateParamAndValue(contractParam); contractParam.setParams(templateParamAndValue); pdfUtil.createContractAssignment(contractParam); return Constant.SUCCESS;)
以下是优化后的代码:
ApplyFinanceDTO dto = new ApplyFinanceDTO();
dto.setId(applyNo);
Result<ApplyFinanceVO> financeResult = applyFeign.selectInfoById(dto);
if (financeResult == null || !financeResult.isSuccess()) {
throw new BusinessException("融资申请信息获取失败");
}
ApplyFinanceVO financeVO = financeResult.getResult();
QueryWrapper<ContractTemplate> wrapper = new QueryWrapper<>();
wrapper.eq(financeVO.getBusinessType() != null, "BUSINESS_TYPE", financeVO.getBusinessType())
.eq(financeVO.getFundType() != null, "EXCLUSIVE_CODE", financeVO.getFundType())
.eq("TEMPLATE_STATUS", InitConstants.STRING_1)
.or(queryWrapper -> queryWrapper.eq("IS_UNIVERSAL", InitConstants.STRING_1).eq("TEMPLATE_STATUS", InitConstants.STRING_1))
.orderByAsc("ID", "TEMPLATE_ID");
List<ContractTemplate> contractTemplates = contractTemplateService.list(wrapper);
CollectContractParam contractParam = new CollectContractParam(applyNo, contractTemplates, null);
List<TemplateParam> templateParamAndValue = createContractService.getTemplateParamAndValue(contractParam);
contractParam.setParams(templateParamAndValue);
pdfUtil.createContractAssignment(contractParam);
return Constant.SUCCESS;
优化方法:
1. 使用 list() 方法代替 selectList() 方法,从而避免基类中的两次无效 count() 查询
2. 删除 wrapper.eq() 方法中的显式非空检查,因为 QueryWrapper 内部自动处理为 IS NOT NULL
3. 将 orderByAsc() 方法放在 QueryWrapper 链式调用的最后,以提高代码可读性
阅读全文