JAVA实现多数据源分页

发布时间 2023-07-17 14:07:34作者: 开发困难户

简述下思路:

举例:有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;
if(beginNum > A.Count){
  //直接查询B数据源数据
}else if(endNum < A.Count){
  //获取A数据源数据
}else if(beginNum <=A.Count &&  endNum >= A.Count){
  //部分A 部分B
  //计算偏移量
  Integer offSet = a.Count % PageSize;
  //设置B的查询条数
  b.setPageSize(PageSize - offset);
}

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