美文网首页
对IPage返回值封装

对IPage返回值封装

作者: 奶盐味小圆饼 | 来源:发表于2020-04-15 19:27 被阅读0次
  • 这个接口我们使用了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>并不用做任何的更改.

相关文章

网友评论

      本文标题:对IPage返回值封装

      本文链接:https://www.haomeiwen.com/subject/hnwcvhtx.html