ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 问题01:为什么要进行分页显示? 数据库中很多情况下都存在**大量数据**,一次显示所有数据不仅造成**数据库负担过重**,同时增加网页**渲染负担**,且网页内容太多也会造成**用户体验差**。 ## 问题02:分页显示的方法和原理? 1. 逻辑分页(代码逻辑上的分页) 2. 物理分页(数据库查询层面的分页) ## 问题03:实现物理分页。 物理分页:使用数据库查询的关键字**limit**,在查询的时候就只查询需要的部分数据即可。 优点:每次查询到的**数据量都较小**(只有一页的数据量) 缺点:每次翻页都是一次数据库连接和查询,**频繁连接数据库**。 1. 所需参数:当前页面page ; 2. 所需参数:每页显示的条数PAGE_SIZE ; 3. 获取数据:当前页page的所有数据list ; 4. 计算获得:数据总条数count ; 5. 计算获得:数据总页数pages ; 6. 创建页码:列出所有页码以及当前页StringBuffer。 ## 问题04:实现逻辑分页。 逻辑分页:将数据所有数据都查询出来之后,用过代码来控制集合的分割来实现数据分割。 优点:如果将查询结果保存到session,则可以较少翻页时的查询次数,**减少数据库操作次数**。 缺点:缓存了数据,可能造成**数据不一致**,且查询到的**数据量大**,依旧是全部数据。 1. 所需参数:当前页面page; 2. 所需参数:每页显示的条数PAGE_SIZE; 3. 获取数据:所有数据list ; 4. 计算获得:当前页page的所有数据pagelist ; 5. 创建页码:列出所有页码以及当前页StringBuffer 。 ## 问题05:创建导航栏 1. 在视图增加导航栏容器,接收导航栏 2. 在控制器中生成导航栏所有内容,包括页面、链接等 3. 控制器调用工具类对导航栏进行处理,需要参数pages、count、currentPage