java对列表分页的方法,及mysql分页的sql原型

发布时间 2023-10-15 00:46:17作者: oktokeep

java对列表分页的方法,及mysql分页的sql原型

1.mysql
* mysql分页查询:
* select <include refid="Base_Column_List" /> from table_test
* order by id desc
* LIMIT #{offset},#{pageSize}

2. java8 skip limit

Stream流中的常用方法skip
Stream流中的常用方法skip:用于跳过元素
如果希望跳过前几个元素,可以使用skip方法获取一个截取之后的新流

Stream流中的常用方法limit
Stream流中的常用方法limit:用于截取流中的元素
limit方法可以对流进行截取,只取用前n个。

3. java list subList

package com.example.core.mydemo.java8;

import com.example.core.mydemo.json2.GsonUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 *
 */
public class SkipLimitTest {
    public static void main(String[] args) {
        List<Integer>  list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        list.add(9);
        list.add(10);

        List<Integer> listPage = new ArrayList<>();
        //add...

        int pageNum = 3;
        int pageSize = 3;
        Integer offset =  (pageNum - 1) * pageSize;
        //split page
        List<Integer> subListPage = list.stream().skip(offset).limit(pageSize).collect(Collectors.toList());
        System.out.println("subListPage=" + GsonUtils.toJson(subListPage));

        //方法2
        List<Integer> subListPage2 = subList(list,pageNum,pageSize);
        System.out.println("subListPage2=" + GsonUtils.toJson(subListPage));

    }

    //subList手动分页,page为第几页,rows为每页个数
    public static List<Integer> subList(List<Integer> list, int pageNum, int pageSize){
        List<Integer> listSort = new ArrayList<Integer>();
        int size=list.size();
        int pageStart=pageNum==1?0:(pageNum-1)*pageSize;//截取的开始位置
        int pageEnd=size<pageNum*pageSize?size:pageNum*pageSize;//截取的结束位置
        if(size>pageStart){
            listSort =list.subList(pageStart, pageEnd);
        }
        //总页数
        int totalPage=list.size()/pageSize;
        System.out.println("totalPage=" + totalPage);
        return listSort;
    }

}