课堂课题:
SpringMVC分页查询和显示
关联任务:
任务五
直播时间:
2018-10-05 15:30:00
课堂内容:
视频链接:
PPT链接:
提交按钮:
小课堂内容格式
标题:
【修真院xx(职业)小课堂】课题名称
开场语:
大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX
(1)背景介绍:
背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。
(2)知识剖析:
讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。
(3)常见问题:
最少列出1个常见问题。
(4)解决方案:
写清楚常见问题的解决方案。
(5)编码实战:
尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。
(6)拓展思考:
知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。
(7)参考文献:
引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。
(8)更多讨论:
Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答
(9)鸣谢:
感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。
(10)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
【修真院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.结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
[北京|荣耀师兄]JAVA-岳晓鹏 发表于 2018-10-07 20:18:06 #1
对逆向不友好是因为逆向通常的分页逻辑也是offset和limit,两者有冲突;知识点讲到了,但是拓展有点少,比方说不用pagehelper用什么来进行分页
回复