【问题标题】:How can i implement paging rest spring without repository我如何在没有存储库的情况下实现分页休息弹簧
【发布时间】:2020-03-04 07:32:35
【问题描述】:

我正在尝试创建一个已创建其余端点的模拟服务

/OrderLine/lists/_generic?limit=3&_paging=NEXT

我正在做的服务层

    List<OrderLineDTO> listPOL = generateMockOrderLinesByCount(Constants.COUNT);

所以我如何在这个模拟数据中应用分页而不使用存储库

我正在尝试首先将列表转换为页面的方法,但似乎没有帮助,或者我尝试的方向错误,请建议。

Page<OrderLineDTO> listToPage(List<OrderLineDTO> list, Pageable pageable) {
        int start = (int) pageable.getOffset();

        int end = (int) ((start + pageable.getPageSize()) > list.size() ? list.size()
                : (start + pageable.getPageSize()));
        Page<OrderLineDTO> page = new PageImpl<OrderLineDTO>(list.subList(start, end), pageable,
                list.size());
        return page;
    }

我的最终 json 响应就像我需要根据通过限制添加字段,最大计数将是一些静态值,比如说 100。所以从总共 100 个字段中,这意味着 listPOL.size()=100,我需要根据给定的限制示例 10 获取此 100。 这最多可以获取 10 次,即。 10 * 限制=10 =100

[
    {
        "_fields": {
            //some data
        }
    },
    {
        "_fields": {
            //some data
        }
    },
    {
        "_count": 3,
        "links": [
            {
                "rel": "self",
                "href": "http://localhost:8080/rest/orderLine/lists/_generic?_fields=_all&_limit=3",

            },
            {
                "rel": "next",
                "href": "http://localhost:8080/rest/orderLine/lists/_generic?_fields=_all&_limit=3&Company=32&orderLine=79",

            },
            {
                "rel": "prev",
                "href": "http://localhost:8080/rest/orderLine/lists/_generic?_fields=_all&_limit=3&Company=82&orderLine=23",

            }
        ]
    }
]

【问题讨论】:

    标签: java spring-boot rest mocking paging


    【解决方案1】:

    我找到了答案

    Page<OrderLineDTO> toPage(List<OrderLineDTO> list, int pagesize, int pageNo) {
    
        int totalpages = list.size() / pagesize;
            PageRequest pageable = new PageRequest(pageNo, pagesize);
    
            int max = pageNo>=totalpages? list.size():pagesize*(pageNo+1);
            int min = pageNo >totalpages? max:pagesize*pageNo;
    
            logger.info("totalpages{} pagesize {} pageNo {}   list size {} min {}   max {} ...........", totalpages,pagesize, pageNo, list.size(),
                    min, max);
            Page<OrderLineDTO> pageResponse = new PageImpl<OrderLineDTO>(list.subList(min, max), pageable,
                    list.size());
            return pageResponse;
        }
    

    并从您的服务中调用您的方法

    Page<OrderLineDTO> page = toPage(listPOL, pagesize), pageno));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多