IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 不使用分页插件进行分页 -> 正文阅读

[大数据]不使用分页插件进行分页

目录

一.分页的好处:

二.分页的方式:

三.分页示例:?


一.分页的好处:

  1. 提高性能,减少内存的压力(减低宽带使用,提高访问速度),一次查20个,比一次查20000个性能肯定更好;另外如果数据量很大,一次性将内容都查询出来,查询出来的结果是放在内存里面的,内存没有这么大

  2. 根据用户的需要,提供适当的数据。如新闻,一般人可能只看最近前20条;如果我们将后面的也都查询出来了,就是浪费

  3. 查询效率快,因为只显示每页的条数,而不是把所有的数据加载出来,另外页面好看,比如几十
    万的数据,你不分页会把页面撑爆

二.分页的方式:

  1. 逻辑分页:在用户第一次访问时,将数据库的所有记录全部查询出来,添加到一个大集合中,然后存放在session对象,再通过页码计算出当前页需要显示的数据内容,存储到一个小的list的集合中,并将其存储到request对象中,跳转到JSP页面,进行遍历显示。 当用户第二次访问时,只要不关闭浏览器,还会从session中获取数据,来进行显示。因为此种方法是在内存的session对象中进行计算分页显示的,而不是真正的将我们数据库进行分页的,所以叫做逻辑分页。
    缺点:如果需要查询的数据量过大,session将耗费大量的内存;因为是在session中获取数据,如果第二次或者更多此的不关闭浏览器访问,会直接访问session,从而不能保证数据是最新的。
    优点:统一代码处理方式,较容易跨数据库做迁移。

  2. 物理分页:使用数据库自身所带的分页机制,例如,Mysql数据库中的limit等机制来完成分页操作。因为是对数据库的数据进行分页条件查询,所以叫物理分页。每一次物理分页都会去连接数据库。

    优点:数据能够保证最新,由于根据分页条件会查询出少量的数据,所以不会占用太多的内存。

三.分页示例(mysql数据库):?

  1. 准备一个表格数据结果对象类,里面有三个属性:
@Data
public class TableResult<T> {

    /**总记录数*/
    private List<T> records;

    /**总条数 */
    private long totalCont;

    /**总页数*/
    private long pageCont;

    public void setPageCont(Integer pageSize){
        if(pageSize==null){
            return;
        }
        if(totalCont % pageSize==0){
            this.pageCont = totalCont/pageSize;
        }else {
            this.pageCont = totalCont/pageSize+1;
        }
    }
}

? ? 2. 准备一个分页类,传输参数的对象(Dto类)继承这个分页类就可以,相当于给传输类添加三个属性,前端进行赋值,里面有三个属性:

@Data
public class BaseDto {

    /**当前页数,从第几页开始查询*/
    private Integer pageNumber;

    /**每页查询多少条数据*/
    private Integer pageSize;

    /**从第几条数据开始查*/
    public Integer start;

    public Integer getStart( ) {
        if(pageNumber==null||pageSize==null){
            return null;
        }
        return (pageNumber-1)*pageSize;
    }
}

? 3. 将TableResult类的三个属性赋值后返回就可以分页
?

 /**获取预案信息原始分页*/
    @Transactional(rollbackFor = Exception.class)
    public TableResult<YaInformation> getYaInformationOrg(YaInformationDto yaInformationDto) {
        TableResult<YaInformation> tableResult =new TableResult();
        /**查询数据*/
        List<YaInformation> yaInformations = yaInformationMapper.getYaInformationList(yaInformationDto);
        /**查询总条数*/
        Integer integer = yaInformationMapper.selectCount(null);

        /**给tableResult赋值*/
        tableResult.setRecords(yaInformations);
        tableResult.setTotalCont(integer);
        tableResult.setPageCont(yaInformationDto.getPageSize());
        return tableResult;
    }

? 4. 查询数据Mapper层代码:
?

 @Select("select * from ya_information limit #{start},#{pageSize}")
 List<YaInformation> getYaInformationList(YaInformationDto yaInformationDto);

?
?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:49:32  更:2022-05-01 15:51:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:28:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码