SpringMVC分页查询和显示

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jnshu_it/article/details/84283224

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【SpringMVC分页查询和显示】


【修真院Java小课堂】SpringMVC分页查询和显示

大家好,我是IT修真院北京分院第35期的学员赵君钊,一枚正直纯洁善良的Java程序员,今天给大家分享一下,修真院官网Java(职业)任务二,深度思考中的知识点——SpringMVC分页查询和显示

 

1. 背景介绍

 

分页查询就是根据需要每次只返回所需要的数据,而不用每次都从数据库中全部把数据提取出来,这样可以降低程序与数据库之间的数据传送量,并且还可以提高程序的性能。 一般来说我们在数据量大的情况下总是会分页显示。分页查询优点:排版清晰,界面美观每页信息数量固定,查询效率快根据用户的需要,提供适当的数据提高性能,减少内存的压力,提高访问速度

 

2. 知识剖析

 

分页查询分为逻辑分页和物理分页

 

逻辑分页

 

逻辑分页是在用户第一次访问时,将数据库的所有记录全部查询出来, 添加到一个大集合中,然后再通过代码获取分页数据,常用的操作是一次性从数据库中查询出全部数据并存储到List集合中,因为List集合有序,再根据索引获取指定范围的数据。

 

逻辑分页主要用于数据量不大、数据稳定的场合。逻辑分页一次性将数据读取到内存,占用了较大的内容空间。而且逻辑分页一次性将数据读取到内存,数据发生改变,数据库的最新状态不能实时反映到操作中,实时性差。

 

物理分页

 

物理分页使用数据库自身所带的分页机制,例如,Oracle数据库的rownum,或者Mysql数据库中的limit等机制来完成分页操作。因为是对数据库的数据进行分页条件查询, 所以叫物理分页。每一次物理分页都会去连接数据库。物理分页主要用于数据量较大、更新频繁的场合。每次只读取一部分数据,占用内存空间较小。物理分页每次需要数据时都访问数据库,能够获取数据库的最新状态,实时性强。

 

MySQL查询语句:

 

1)select * from table

 

2)select * from table limit m,n

 

3.常见问题

 

Mybatis分页插件PageHelper

PageHelper的原理是基于拦截器实现的。拦截器的配置有两种方法,一种是在mybatis的配置文件中配置,一种是直接在spring的配置文件中进行

 

在执行sql前添加插件,完成分页功能在查询的sql语句执行之前,添加一行代码PageHelper.startPage(param1, param2);第一 个参数表示第几页,第二个参数表示每页显示的记录数。这样在执行sql后就会将记录按照语句中设置的那样进行分页。如果需要获取总记录数的话,需要PageInfo类的对象,这个对象可以获取总记录数.

 

4.解决方案

 

5.编码实战

 

6.扩展思考

 

PageInfo这个类里面的属性:

 

pageNum当前页

pageSize每页的数量

size当前页的数量

orderBy排序

startRow当前页面第一个元素在数据库中的行号

endRow当前页面最后一个元素在数据库中的行号

total总记录数(在这里也就是查询到的用户总数)

pages总页数 (这个页数也很好算,每页5条,总共有11条,需要3页才可以显示完)

list结果集

prePage前一页

nextPage下一页

isFirstPage是否为第一页

isLastPage是否为最后一页

hasPreviousPage是否有前一页

hasNextPage是否有下一页

navigatePages导航页码数

navigatepageNums所有导航页号

navigateFirstPage导航第一页

navigateLastPage导航最后一页

firstPage第一页

lastPage最后一页


7.参考文献

 

参考资料:https://www.jianshu.com/p/50fcd7f127f0

————Mybatis分页插件PageHelper

 

8.更多讨论

 

 

PageHelper的安全性?

 

 

PageHelper 方法使用了静态的 ThreadLocal 参数,分页参数和线程是绑定的。

只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为 PageHelper 在 finally 代码段中自动清除了 ThreadLocal存储的对象。

 

4.X和5.X的配置?

 

5.x版本开始使用com.github.pagehelper.PageInterceptor新版拦截器。总的来说,pagehelper4.x就该用4.x的配置,pagehelper5.x就用5.x的配置(官方推荐)

 

PageHelper的缺点

 

它对逆向工程生成的代码支持不好,不能对有查询条件的查询分页,会抛异常

 

9.鸣谢

 

感谢观看,如有出错,恳请指正

 

10.结束语:

 

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

 

 

 

PPT链接 视频链接

更多内容,可以加入IT交流群565734203与大家一起讨论交流

这里是技能树·IT修真院:https://www.jnshu.com,初学者转行到互联网的聚集地

猜你喜欢

转载自blog.csdn.net/jnshu_it/article/details/84283224