IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

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)结束语:

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

SpringMVC分页查询和显示    

辅导师兄 [郑州|结业弟子]UI-王贝贝


修真院官网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值的上限。

即:初始值,最大与最小值范围。


评论

请您登录 后进行评论