组合查询
Mybaits-plus 中,两张表组合查询,xml方式
在FlowMapper接口中自定义接口
public interface FlowMapper extends BaseMapper {
List pageList(FlowDTO dto);
}
手动添加FlowMapper.xml文件,添加到相应的位置,然后进行具体的逻辑编写
<?xml version="1.0" encoding="UTF-8" ?>
修改namespace,并且自定义传入参数类型
package com.ruoyi.project.dy.domain.dto;
import lombok.Data;
/**
* @author LIAO
*/
@Data
public class FlowDTO {
/**
* 流程名称
*/
private String flowName;
/**
* 图号
*/
private String productTno;
/**
* 阶段编号
*/
private String scheduleStage;
/**
* 流程状态
*/
private String flowStatus;
}
然后在service和service实现类中进行实现
/**
* 流程列表
*
* @param dto 条件查询
* @return
*/
List pageList(FlowDTO dto);
@Override
public List pageList(FlowDTO dto) {
return baseMapper.pageList(dto);
}
最后在cnotroller中进行调用,注意使用若依分页的时候,startPage()写在需要分页查询的前面,手动获取分页的结果,getDataTable(),并自定义返回结果
@GetMapping("/list")
public TableDataInfo list(FlowDTO dto) {
//默认状态 0 正常 没用注销状态
String flowStatus = "0";
dto.setFlowStatus(flowStatus);
//条件查询
startPage();
List flowList = flowService.pageList(dto);
// List flowList = flowService.list(Wrappers.query().lambda().eq(Flow::getStatus, flowStatus));
// 用于流程管理页面展示
TableDataInfo dataTable = getDataTable(flowList);
List list = new ArrayList<>();
// 根据流程id遍历流程和图号绑定表
for (Flow f : (List) dataTable.getRows()) {
FlowIndexVo flowIndexVo = new FlowIndexVo();
String flowId = f.getFlowId();
flowIndexVo.setFlowId(flowId);
flowIndexVo.setFlowName(f.getFlowName());
flowIndexVo.setUpdateTime(f.getUpdateTime());
List flowBinds = flowBindService
.list(Wrappers.query().lambda().eq(FlowBind::getFlowId, flowId));
flowIndexVo.setFlowBindList(flowBinds);
list.add(flowIndexVo);
}
dataTable.setRows(list);
return dataTable;
}