首页 > 编程语言 >在线直播源码,java数据分页几种方式

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

时间:2023-05-09 14:11:40浏览次数:35  
标签:java navigatePages int Page 直播 params navigatepageNums 源码 pageFromJPA

在线直播源码,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数据分页几种方式,更多内容欢迎关注之后的文章

 

标签:java,navigatePages,int,Page,直播,params,navigatepageNums,源码,pageFromJPA
From: https://www.cnblogs.com/yunbaomengnan/p/17384817.html

相关文章

  • 纯java项目maven 打可执行包
    <build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><version>3.5.0</version><configuration><......
  • Java Test ENV setup for Algorithms, 4th Edition
    setjavaenv,add/home/linxu/myspace/java_projects/algs4/algs4.jartoCLASSPATHsudovim~/.bashrcexportJAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64exportPATH=$PATH:$JAVA_HOME/binexportCLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_......
  • java.lang.IllegalStateException: Failed to check the status of the service 的解
    参考资料java.lang.IllegalStateException:Failedtocheckthestatusoftheservice的解决办法_Hello_World_QWP的博客-CSDN博客环境条件springcloud,注册中心用的是zookeeper;报错原因@ReferenceprivateXXXServicexxxService;解决方法@Refe......
  • java代码开发规范
    目录风格指南相关工具开发规范日志规范链路追踪规范其他命名规范分支管理项目与服务名称镜像规范参考资料啦啦啦~~我不生产规范,我只是规范的搬运工风格指南代码风格以googlecodestyle为标准,规范内容:英文原文:https://google.github.io/styleguide/javaguide.html中文......
  • Go源码阅读——github.com/medcl/esm —— file.go
    esm(AnElasticsearchMigrationTool)—— file.gohttps://github.com/medcl/esmrelease:8.7.1通过阅读好的源代码,细致思考,理性分析并借鉴优秀实践经验,提高zuoyang的编程水平,所谓"他山之石,可以攻玉" 该是如此吧。  /*Copyright2016Medcl(mATmedcl.net)Licen......
  • Windows下cygwin编译redis源码
    准备环境安装cygwin64下载地址:https://www.cygwin.com/运行安装程序,一直下一步选择阿里镜像,目前试过163,会比阿里慢需要选择的包有make、pkg-config、pythongcc相关是否需要还不确定安装重新可重复执行,缺少的包下次可以补上点击下一步等待安装完成即可下载redis源码https://......
  • Java NullPointerException 没有打印堆栈
    ref  https://www.bbsmax.com/A/obzbgx41JE/ 周五在公司搭好的ELK上查看日志,组长让看看其中NullPointerException出现很多的原因。通过NullPointerException搜索,点看其中一个查看,发现异常的信息就一行java.lang.NullPointerException,并没有堆栈信息。看了几个都没有,然后翻......
  • Java设计模式-代理模式
    简介代理模式是一种结构型设计模式,它可以让我们通过一个代理对象来访问一个真实的目标对象,从而实现对目标对象的功能扩展或保护。代理模式的主要角色有三个:抽象主题(Subject):定义了真实主题和代理主题的公共接口,使得在任何使用真实主题的地方都可以使用代理主题。真实主题(RealS......
  • Java爬虫可以非常溜
    Java爬虫是一种利用Java语言编写的网络爬虫,主要用于从互联网上获取数据。在Java中,常用的爬虫框架有Jsoup、HttpClient、Selenium等。其中Jsoup是一种解析HTML文档的Java库,可以方便地进行HTML解析和内容提取。HttpClient是Apache组织开发的JavaHTTP客户端库,......
  • Go源码阅读——github.com/medcl/esm —— esapi.go
    esm(AnElasticsearchMigrationTool)—— esapi.go https://github.com/medcl/esmrelease:8.7.1通过阅读好的源代码,细致思考,理性分析并借鉴优秀实践经验,提高zuoyang的编程水平,所谓"他山之石,可以攻玉" 该是如此吧。 /*Copyright2016Medcl(mATmedcl.net)Licen......