课堂课题:
SpringMVC分页查询和显示
关联任务:
任务五
直播时间:
2019-06-16 15:00: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任务2,深度思考中的知识点——SpringMVC分页查询和显示
1.背景介绍:
我们在mysql里可以使用limit进行分页,只要在查询语句里增加两个参数就好,那在SpringMVC中是怎么使用的呢?
2.知识剖析:
进行分页,需要哪些功能
1、页面跳转到首页尾页或自定义
2、上一页,下一页
3、记录总数
4、总页数
5、当前页
3常见问题:
SpringMVC分页查询和显示可以有什么办法?
1、用分页插件,低耦合,简单,方便,可复用……
2、自己手写一个(造轮子),完全是上面的反例,不过造轮子是理解一个知识比较好的方法
4.编码实战:
/*查询接口*/
@RequestMapping(value = "select", method = RequestMethod.GET)
public String selectStudent(Student student, Model model,
@RequestParam(value = "page", required = false) Long page,
@RequestParam(value = "size", required = false) Long size) {
/*如果未设置page与size值,将给这两个值赋初始值*/
if (page == null) {
page = 1L;
}
if (size == null) {
size = 10L;
}
/*通过查询的对象获取总记录数*/
long selectCount = studentService.selectCount(student);
model.addAttribute("count", selectCount);
logger.info("共{}条记录", selectCount);
/*通过总记录数除以单页记录数size获取总页数*/
long totalPage = (long) Math.ceil((double) selectCount / size);
logger.info("共{}页", totalPage);
/*返回总页数*/
model.addAttribute("totalPage", totalPage);
/*在点击上一页与下一页时判断首页、尾页page的值*/
if (page >= totalPage) {
page = totalPage;
} else if (page <= 0) {
page = 1L;
}
/*返回页数与单页记录数*/
model.addAttribute("page", page);
model.addAttribute("size", size);
/*上一页与下一页的page的值*/
model.addAttribute("pageAdd", page + 1);
model.addAttribute("pageMinus", page - 1);
/*返回查询的对象*/
logger.info("查询:{}", student);
model.addAttribute("student", student);
/*返回查询后的对象*/
logger.info("查询:{},页数{},单页记录数{}", student, page, size);
model.addAttribute("select", studentService.selectStudent(student, page, size));
return "select";
}
5.拓展思考:
在分页的时候,一定要传这么多数据吗?
如果数据量大的话,设置个最大页数。
比如淘宝里搜索商品最多只能100页。100页以后的查不了,就不用传100后的数据了。
就像我们用百度搜索资料的时候,绝对大多数都在第一二页找,
很多时候连第二页都不愿意翻,所以就不用返回所有的记录了。
6参考文献:
Spring MVC 关于分页的简单实现</p>
https://www.cnblogs.com/xianan87/p/3948816.html
7更多讨论:
Q1:提问人:为什么要设置初始页数和单记录数,这个不是前端传过来的吗?
A1:回答:分页的值虽然是前端给的,但是我们也要设置,不然如果前端出BUG没传或者有人绕过前端直接调用我们的接口不传page和size的值。那不就出错了。至少要做个判空处理,如果这两个值为空就不处理这个请求。
Q2: 提问人:在项目里要写这么多代码?
A2:回答:正常前后端分离的情况下,我们只要处理前端传过来的page和size值就行。他们传什么值,我们处理什么。
Q3: 提问人:像视频里我们可以直接传size等于1000或者更大的值,那是不是分页就没用了。
A3:回答:正常网站是给普通用户用的,如果真怕有这样的人,那就设置个size值的上限。
即:初始值,最大与最小值范围。