美文网首页
对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