- 这个接口我们使用了WorkOrder这个类自带的mapper进行数据的查询,返回结果封装为IPage<WorkOrder>类型,为了使用page的分页功能,但是如果我们需要在这个返回结果里新增其他的属性,但是是不属于这个表的字段,这个时候我们就需要下面这种解决方案.
IPage<WorkOrder> orderList = workOrderMapper.selectPage(page, queryWrapper);
List<WorkOrder> list = new ArrayList<>();
for(WorkOrder order: orderList.getRecords()){
OrderDeliverInfo info = BeanUtil.map(order,OrderDeliverInfo.class);
OrderDeliverInfo settlement =orderListMapper.findSettlement(info.getId());
if(settlement != null) {
info.setStatus(settlement.getStatus());
}
list.add(info);
}
page.setRecords(list);
- 上面是代码的一部分,我们在得到了orderList 这个结果之后,对这个结果进行操作
<resultMap id="Order" type="com.model.OrderDeliverInfo">
<result column="status" property="statusOfSettlement" />
</resultMap>
<select id="findSettlement" resultMap="Order">
select status
from sheetName
where enabled = 0 and deleted = 0
and id = #{id}
</select>
- 上面是mapper里的sql查询语句,对于新增的一个属性进行查询,返回集合类型就是我们下面要说到的model类型.
public class OrderDeliverInfo extends WorkOrder {
private Integer status;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
}
- 这里使用extends 是继承了原始的返回值类型所使用的WorkOrder类 , 继承之后可以使用父类的属性,并且进行了扩展使用.
- 最后使用page.setRecords(list);把结果进行封装,而原始的返回值类型IPage<WorkOrder>并不用做任何的更改.
网友评论