这个作业属于哪个课程 2021春软件工程实践|S班(福州大学)
这个作业要求在哪里 作业具体要求
这个作业的目标 个人技术
参考文献 ...

技术概述

SSM的分页技术主要在我负责的产品的中在信息展示时会使用到,分别在讨论和签到的多页展示中,由于数据库的内容可能会比较多,所以需要使用该技术,难点主要存在于和前后端对接的具体数据接口可能会出现无法对接问题

技术详述

  • 1.首先在pom中配置需要的pageHelper的依赖
  1. <dependency>
  2. <groupId>com.github.pagehelper</groupId>
  3. <artifactId>pagehelper</artifactId>
  4. <version>5.2.0</version>
  5. </dependency>
  • 2.在Controller列表展示页面加入一个有当前页面参数的Integer currentPage
  1. @RequestMapping("/detail")
  2. @ResponseBody
  3. public Topic getCommentList(Integer id,@RequestParam(value = "currentPage",required=false,defaultValue="1")Integer currentPage){
  4. Topic topic=topicService.findTopicComment(id,currentPage);
  5. return topic;
  6. }
  • 3.在实现了Service接口的ServiceImpl函数中调用pageHelper,并传入具体参数
  1. public class TopicController {
  2. @Autowired
  3. private TopicService topicService;
  4. @RequestMapping("/category")
  5. /**
  6. *
  7. * 搜索
  8. */
  9. @ResponseBody
  10. public List<Topic> getCategory(String content,String type,Model model,@RequestParam(value = "currentPage",required=false,defaultValue="1")Integer currentPage){
  11. List<Topic> topics=null;
  12. if(type.equals("title")) {
  13. topics=topicService.findTopicByTitle(content,currentPage);
  14. }
  15. else{
  16. topics=topicService.findTopicByAccount(content,currentPage);
  17. }
  18. model.addAttribute(topics);
  19. return topics;
  20. }
  21. @RequestMapping("/all")
  22. @ResponseBody
  23. public List<Topic> getAll(@RequestParam(value = "currentPage",required=false,defaultValue="1")Integer currentPage){
  24. List<Topic> topics=topicService.findAllTopic(currentPage);
  25. return topics;
  26. }
  27. @RequestMapping("/detail")
  28. @ResponseBody
  29. public Topic getCommentList(Integer id,@RequestParam(value = "currentPage",required=false,defaultValue="1")Integer currentPage){
  30. Topic topic=topicService.findTopicComment(id,currentPage);
  31. return topic;
  32. }
  33. @RequestMapping("/newTopic")
  34. @ResponseBody
  35. public int insertTopic(Topic topic){
  36. int rows=topicService.insertTopic(topic);
  37. return rows;
  38. }
  39. @RequestMapping("/deleteTopic")
  40. @ResponseBody
  41. public int deleteTopic(Integer id){
  42. int rows=topicService.deleteTopic(id);
  43. return rows;
  44. }
  45. }
  • 4.当然,在具体的Mapper中还要编写相应的和数据库的查询操作,这和未加分页的方法是一样的,这里就举几个例子
  1. <mapper namespace="team.ljm.secw.mapper.TopicMapper">
  2. <select id="findTopicById" parameterType="Integer" resultType="Topic">
  3. select * from t_topic where id = #{id}
  4. </select>
  5. <select id="findTopicByTitle" parameterType="String" resultType="Topic">
  6. select * from t_topic where title=#{title}
  7. </select>
  8. <select id="findTopicByAccount" parameterType="String" resultType="Topic">
  9. select * from t_topic where account=#{account}
  10. </select>
  • 5.流程图

问题和解决过程

  • 分页的问题其实是在具体底层mybatis的查询功能都做完之后才开始编写考虑的,主要的原因是在摒弃无限下拉的展示功能后,考虑到内容展示需要在每个页面有一定的限制,bing所以选择了比较好用的pageHelper来快速实现分页功能,在后端测试时,使用了一点点的jsp代码来进行测试
  1. <div class="page text-left clearfix" style="margin-top: 40px">
  2. <a <c:if test="${pageInfo.pageNum != 1}">href="${pageContext.request.contextPath}/product/list?currentPage=${pageInfo.pageNum - 1 }"</c:if>
  3. <c:if test="${pageInfo.pageNum == 1}"> href="javascript:void(0)" class="disabled"</c:if>
  4. >上一页</a>
  5. <c:forEach begin="1" end="${pageInfo.pages }" varStatus="status">
  6. <a href="${pageContext.request.contextPath}/product/list?currentPage=${status.count }"
  7. <c:if test="${status.count == pageInfo.pageNum}">class="select"</c:if>>${status.count }</a>
  8. </c:forEach>
  9. <a <c:if test="${pageInfo.pageNum == 20}">class="disabled" href="javascript:void(0)"</c:if>
  10. <c:if test="${pageInfo.pageNum != 20}">href="${pageContext.request.contextPath}/product/list?currentPage=${pageInfo.pageNum + 1 }"</c:if>
  11. >下一页</a>
  12. </div>

最终结果也是比较喜人的,算是顺利解决

总结

pageHelper属于对于前端界面的一个补充和对数据库查询的压力降低,网上对这方面的使用教程应该也挺多的,但和自己实际操作起来还是很不一样,总体来说前后的pageHelper的使用算是比较顺利,测试也很快,我相信SSM还有很多很好用的插件等着自己去探索

参考文献

PageHelper的概述和基本使用

SSM动态展示分页的更多相关文章

  1. SSM框架——实现分页和搜索分页

    登录|注册     在路上 在路上,要懂得积累:在路上,要学会放下:我在路上!Stay hungry,Stay foolish.       目录视图 摘要视图 订阅 [公告]博客系统优化升级     ...

  2. 微信小程序结合后台数据管理实现商品数据的动态展示、维护

    微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通 ...

  3. SSM框架实现分页

    SSM框架实现分页 1,.首先创建一个分页的工具类 package cn.page.po; import java.io.Serializable; public class Page impleme ...

  4. 在Winform系统界面中对进展阶段的动态展示和处理

    在我们做客户关系管理系统的Winform界面的时候,需要对进展阶段这个属性进行一个方便的动态切换和标记处理,如我们根据不同的进展阶段显示不同的相关信息,也可以随时保存当前的阶段信息.其实也是一个比较常 ...

  5. MVC+EF+PagedList+调用通用存储封装+多表联合信息展示分页+存储过程分页

    主要的技术点不在这里一一阐述,相关存储也是引用别人的,主要技术点就是通过最优性能方式处理需求,PagedList.包需要在线安装就可以 直接上干货 1.存储代码之第一种: 参数相对多点 /**//* ...

  6. JAVAEE——宜立方商城09:Activemq整合spring的应用场景、添加商品同步索引库、商品详情页面动态展示与使用缓存

    1. 学习计划 1.Activemq整合spring的应用场景 2.添加商品同步索引库 3.商品详情页面动态展示 4.展示详情页面使用缓存 2. Activemq整合spring 2.1. 使用方法 ...

  7. 【ajax+php】动态展示4级单位(省、市、县、镇)

    1.本篇教程以ajax+php动态展示[省.市.县.镇]四级地区单位 2.效果图:    3.不废话,贴代码! HTML: <div class="form-group"&g ...

  8. [python] 排序的动态展示

    两句闲话 本文所说的排序是指基于交换的排序.因此,按理来说,本文应该叫基于交换的排序的动态展示,但是这样太拗口了. 效果展示 最终效果如下. 实现方法 需要说明的是,在这里是通过pygame来实现图形 ...

  9. Arcgis栅格时序地图制作---时间轴动态展示多期影像

    转自原文 Arcgis栅格时序地图制作---时间轴动态展示多期影像 效果如何???满意您go on,不满意咱 say goodbye··· 题外话: 为了在这里动态展示下制作结果,也是费了老劲了,转换 ...

随机推荐

  1. C++ primer plus读书笔记——第2章 开始学习C++

    第2章 开始学习C++ 1. endl确保程序继续运行前刷新输出(将其立即显示在屏幕上),而使用"\n"不提供这样的保证,这意味着在有些系统中,有时可能在您输入信息后才会出现提示. ...

  2. Mac 搭建 Sentry

    Sentry 为我们提供应用程序的错误跟踪,使我们能够快速定位到错误所在的文件和行号. 以下是官网支持语言和框架的部分截图: 准备工作 自 2020 年 12 月 4 日起,Sentry 默认使用 P ...

  3. 『动善时』JMeter基础 — 16、JMeter配置元件【HTTP信息头管理器】

    目录 1.用于演示的项目说明 2.测试计划内包含的元件 3.HTTP请求界面内容 4.查看脚本执行结果 5.添加请求头信息(HTTP信息头管理器) 6.优先级说明 7.补充:常见请求头信息 JMete ...

  4. 定义私有属性: *String name; * int age; * String gender; * int salary; Date hiredate;//入职时间

    import java.text.SimpleDateFormat; import java.util.Date; /** * 定义私有属性: * String name; * int age; * ...

  5. Aliyun SSL 证书签发&安装

    目录 HTTPS SSL证书 签发 和 应用 证书购买 证书申请 证书安装 参考文档 HTTPS SSL证书 签发 和 应用 - SSL证书服务(Alibaba Cloud SSL Certifica ...

  6. Java forEach 方式遍历集合(Java 8 新特性)

    JDK 8 新增 forEach 方式遍历集合,这种方式比原来的 for each 循环还要简洁和便利. 需要注意:如果你计算机安装的是 JDK 8 以前的版本,是不支持 JDK 8 的新特性 Lis ...

  7. 6.5 scp:远程文件复制

    scp命令 用于在不同的主机之间复制文件,它采用SSH协议来保证复制的安全性.scp命令每次都是全量完整复制,因此效率不高,适合第一次复制时使用,增量复制建议使用rsync命令替代.     scp ...

  8. 链路追踪_SkyWalking的部署及使用

    关于链路追踪,目前比较主流是Cat,Zipkin,SkyWalking等这些工具.这篇文章主要介绍关于SkyWalking工具的. 为什么用SkyWalking,因为它基本没有代码侵入,只这一点就足够 ...

  9. Ajax向服务器端发送请求

    Ajax向服务器端发送请求 Ajax的应用场景 页面上拉加载更多数据 列表数据无刷新分页 表单项离开焦点数据验证 搜索框提示文字下拉列表 Ajax运行原理 Ajax 相当于浏览器发送请求与接收响应的代 ...

  10. Golang基础编程(一)-基本结构、数据类型、流程语句

    一.Go语言简介 简洁,高效,并发 二.语言特性 ·简洁,只有25个关键字 ·函数多返回值 ·匿名函数和闭包 ·类型和接口 ·自动垃圾回收 ·编译迅速 ·并发编程 25个关键字: 三.Go程序基本结构 ...