JAVA实现多数据源分页

简述下思路:

举例:有A,B两个数据源的数据需要查询展示,优先展示A数据源数据,我使用的数据源是 clickhouse+mysql

1,因为需要优先展示A数据源嘛,那就直接通过条件优先查询A数据源数据

2,然后根据分页情况,判断A数据源数据量是否满足当前分页所需数据量。

     有以下三种情况:先获取当前页的起始条数(我用到的是hutool的工具类PageUtil)

 int beginNum= PageUtil.getStart(currPage, page.getPageSize()) -1;

 int endNum= PageUtil.getEnd(currPage, page.getPageSize()) -1;
List<Obj> AList= repository.getInfo();
if
(beginNum > AList.size()){ //直接查询B数据源数据 }else if(endNum < AList.size()){ //获取A数据源数据 }else if(beginNum <=AList.size() && endNum >= AList.size()){ //部分A 部分B //计算偏移量 Integer offSet = a.Count % PageSize; //设置B的查询条数 b.setPageSize(PageSize - offset); }
List<Obj> BList= repository.getInfo();
AList.addAll(BList)

3,最后在返回Controller层时,将A,B数据源的条数加总,求的总页数,一起返回即可

posted @ 2023-07-17 14:05  杰尔码  阅读(693)  评论(0)    收藏  举报