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; } }