在线直播源码,java数据分页几种方式

发布时间 2023-05-09 14:09:03作者: 云豹科技-苏凌霄

在线直播源码,java数据分页几种方式

1.使用PageUtils

 


Service:
  /**
     * 分页查询
     *
     * @param params 查询条件
     * @return PageUtils
     */
    PageUtils queryPage(Map<String, Object> params);
    
ServiceImpl:
  Page<数据库对象实体> page = this.selectPage(
                new Query<数据库对象实体>(params).getPage(),
                new EntityWrapper<数据库对象实体>()
                //MybatisPlus sql语句
                        .eq(字段,"匹配值")
                        //具体用法详情百度
                        .orderBy(按照排序的数据库字段, true)
        );
        return new PageUtils(page);
 

2.使用Page

 


Service:
    /**
     * 分页查询
     * @param params 查询条件
     * @return 
     */
    Page<数据库对象实体>  queryPage(Map<String, Object> params);
    
ServiceImpl:
  Page<数据库对象实体> page = new Page<>(Public.mapTo(params.get("page"), 1), Public.mapTo(params.get("pageSize"), 10));
  //可以手写sql,提高sql的灵活性(但是题主人懒,还是喜欢使用 MysqlbatisPlus 那种方式),但是可以锻炼你的SQL书写能力
        List<数据库对象实体> list = Dao.方法名(page, params);
        Page<数据库对象实体> pageInfo = page.setRecords(list);
        return pageInfo;
        
Dao:
List<数据库对象实体> 方法名 (Pagination page,Map<String, Object> map);
//具体的SQL就不写了
 

 

3.Jpa分页

 

需要一个分页类   Page4Navigator

 

Page<T> pageFromJPA;
    int navigatePages;
     
    int totalPages;
 
    int number;
     
    long totalElements;
     
    int size;
 
    int numberOfElements;
 
    List<T> content;
 
    boolean isHasContent;
 
    boolean first;
 
    boolean last;
     
    boolean isHasNext;
 
    boolean isHasPrevious;
     
    int[] navigatepageNums;
     
    public Page4Navigator() {
        //这个空的分页是为了 Redis 从 json格式转换为 Page4Navigator 对象而专门提供的
    }
     
    public Page4Navigator(Page<T> pageFromJPA,int navigatePages) {
        this.pageFromJPA = pageFromJPA;
        this.navigatePages = navigatePages;
         
        totalPages = pageFromJPA.getTotalPages();
         
        number  = pageFromJPA.getNumber() ;
         
        totalElements = pageFromJPA.getTotalElements();
         
        size = pageFromJPA.getSize();
         
        numberOfElements = pageFromJPA.getNumberOfElements();
         
        content = pageFromJPA.getContent();
         
        isHasContent = pageFromJPA.hasContent();
                 
        first = pageFromJPA.isFirst();
         
        last = pageFromJPA.isLast();
         
        isHasNext = pageFromJPA.hasNext();
         
        isHasPrevious  = pageFromJPA.hasPrevious();       
         
        calcNavigatepageNums();
         
    }
 
    private void calcNavigatepageNums() {
        int navigatepageNums[];
        int totalPages = getTotalPages();
        int num = getNumber();
        //当总页数小于或等于导航页码数时
        if (totalPages <= navigatePages) {
            navigatepageNums = new int[totalPages];
            for (int i = 0; i < totalPages; i++) {
                navigatepageNums[i] = i + 1;
            }
        } else { //当总页数大于导航页码数时
            navigatepageNums = new int[navigatePages];
            int startNum = num - navigatePages / 2;
            int endNum = num + navigatePages / 2;
 
            if (startNum < 1) {
                startNum = 1;
                //(最前navigatePages页
                for (int i = 0; i < navigatePages; i++) {
                    navigatepageNums[i] = startNum++;
                }
            } else if (endNum > totalPages) {
                endNum = totalPages;
                //最后navigatePages页
                for (int i = navigatePages - 1; i >= 0; i--) {
                    navigatepageNums[i] = endNum--;
                }
            } else {
                //所有中间页
                for (int i = 0; i < navigatePages; i++) {
                    navigatepageNums[i] = startNum++;
                }
            }
        }  
        this.navigatepageNums = navigatepageNums;
    }

 

 以上就是 在线直播源码,java数据分页几种方式,更多内容欢迎关注之后的文章