实现文章上一篇和下一篇的两种方式
实现文章上一篇和下一篇的两种方式:
1.获取数据列表,通过程序判定当前文章的上一篇和下一篇;
注意:数据量少的话用以上方式解决,但是如果数据量较大则效率低下,请参考第二种实现方式;
@RequestMapping(value="detail${urlSuffix}")public String detail(ConfigGovernmentMessage configGovernmentMessage, HttpServletRequest request, HttpServletResponse response, Model model) {ConfigGovernmentMessage governmentMessage = configGovernmentMessageService.get(configGovernmentMessage);model.addAttribute("governmentMessage", governmentMessage);ConfigGovernmentMessage messages = new ConfigGovernmentMessage();messages.setStatus(DictUtils.getDictValue("上架", "on_off_show", "1"));List<ConfigGovernmentMessage> list = configGovernmentMessageService.findList(messages);ConfigGovernmentMessage beforeMessage = null;ConfigGovernmentMessage afterMessage = null;int idx = 0;for (ConfigGovernmentMessage message : list) {if(governmentMessage.getId().equals(message.getId())){break;}idx++;}if(list.size() >1) {if(idx==0){afterMessage = list.get(idx+1);}else if(idx==list.size()-1){beforeMessage = list.get(idx-1);}else{beforeMessage = list.get(idx-1);afterMessage = list.get(idx+1);}}model.addAttribute("beforeMessage", beforeMessage);model.addAttribute("afterMessage", afterMessage);ConfigSystemClassify configSystemClassify = new ConfigSystemClassify();List<ConfigSystemClassify> classifyList = configSystemClassifyService.findList(configSystemClassify);model.addAttribute("classifyList", classifyList);return "front/app/government/governmentMessageDetail";}
2.通过sql的行号(rownum)实现上一篇和下一篇
mysql实现:
mysql本身没有行号,可以通过@rownum1 := 0
定义变量实现,如下:
SELECTm.*
FROM(SELECTa.id,(@rownum1 := @rownum1 + 1) AS rownumFROMcms_article a,(SELECT @rownum1 := 0) b) m -- 1.查询文章列表以及行号(rownum),(SELECTc.rownumFROM(SELECTa.id,(@rownum2 := @rownum2 + 1) AS rownumFROMcms_article a,(SELECT @rownum2 := 0) b) cWHEREc.id = '1000000957611871') n -- 2.查询当前文章在文章列表中的行号
WHEREm.rownum > n.rownum -- 3.通过比较行号来寻找上一篇和下一篇,大于号(>)代表下一篇,小于号(<)代表上一篇
LIMIT 1
oracle实现:
oracle本身自带伪列行号,不用像mysql那样操作,如下:
SELECTm.*
FROM(SELECTa.id,rownumFROMcms_article a) m -- 1.查询文章列表以及行号(rownum),(SELECTc.rownumFROM(SELECTa.id,rownumFROMcms_article a) cWHEREc.id = '1000000957611871') n -- 2.查询当前文章在文章列表中的行号
WHEREm.rownum > n.rownum -- 3.通过比较行号来寻找上一篇和下一篇,大于号(>)代表下一篇,小于号(<)代表上一篇
LIMIT 1
实现文章上一篇和下一篇的两种方式相关推荐
- linux下安装mysql的方式_linux下安装mysql的两种方式
linux下安装mysql的两种方式 1 源码安装 1 创建mysql用户: useradd mysql passwd mysql 2 解压缩下载的mysql包: tar -zxvf mysql-5. ...
- ubuntu下创建定时任务的两种方式及常见问题解决方案
ubuntu下创建定时任务的两种方式及常见问题解决方案 参考文章: (1)ubuntu下创建定时任务的两种方式及常见问题解决方案 (2)https://www.cnblogs.com/maboii/p ...
- Android10下wifi连接的两种方式:点对点连接和外网连接
因为Android下的API总是在变,权限越来越少.导致出现的问题层出不穷,所以我们只好按照官方手册去开发了. 在看了手册后,我们知道连接网络有两种: 1.点对点连接,意思就是我们直接去连接自己指定的 ...
- vue 如何将参数放到连接上_通过Vue路由传参的两种方式及Vue组件中接收参数的方式...
1. Vue传参方式 1.1 通过动态路由传参 我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件.例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染.那 ...
- Finereport 设置下拉框的两种方式
执行结果. 第一种方式:在模板数据集查询里面添加Where条件: 1.在数据集中添加Sql语句: SELECT * FROM 订单 SELECT * FROM 订单 where 货主地区='${dq} ...
- 中级篇——树莓派系统备份恢复的两种方式
树莓派系统备份恢复 方式一: 使用树莓派烧录工具,Win32DiskImager 工具的读取功能,如下图.优点是操作简单,缺点也很明显,因为是全盘读取,所以读取的备份文件非常大,不利于传播分享.所以p ...
- python获取文件夹下所有文件的两种方式
需求:给你一个指定的文件夹路径,让你得到该路径下的所有文件,在这里我是用递归去实现的. 方法1:递归操作,代码可读性强,但是效率太慢 直接上代码: import osdef list_dir(text ...
- 下拉框数据绑定两种方式
1.利用cs包,DataAccess.cs #region string m_str = @"select sname from service group by sname"; ...
- php ThinkPHP文章上一篇、下一篇解决方案
在平时的项目中,我们常常会遇到下述的一种情况: 在文章详情页的底部位置,有上一篇.下一篇文章. 初次遇到此类问题,习惯性的按照前辈的处理思路 http://www.jb51.net/article/5 ...
- DEDECMS关于文章上一篇和下一篇标题长度的设置方法
dedecms获取上一篇.下一篇文章的标签分别为:{dede:prenext get='pre'/}和{dede:prenext get='next'}.那么如何才能通过标签来控制文章标题的长度呢?其 ...
最新文章
- SpringCloud 之 Zuul 网关搭建及配置
- 墨瞳漫画h5一期 vuejs总结
- 企业壳的反调试及Hook检测分析
- 通讯故障_伦茨lenze全数字直流调速器通讯故障维修经验很丰富
- 3d数学基础图形与游戏开发 英文版_1850款文字标题字幕条,AE图形预设包,logo生成神器...
- 阿里云数加产品家族图首次亮相
- Faiss源码剖析:类结构分析
- 《代码大全》代码生成
- 浅谈API测试与UI Auomation一点心得
- SpringBoot 嵌入式web容器的启动原理
- matlab引擎下载,安装用于 Python 的 MATLAB 引擎 API
- es like模糊匹配_Elastic search模糊匹配,精确匹配显示在前
- 一个码稿人自述:什么样的文档产品适合我?|深度吐槽
- ssh 所选的用户密钥未在远程主机上注册
- 学硕停招,985高校这些专业开始只留专硕
- PLC通讯实现-C#实现欧姆龙以太网通讯FINS(二)
- 2014-2015 少年辛苦终身事,莫向光阴惰寸功
- Linux人机界面用什么软件,浙江Linux人机界面品牌,人机界面界面设计品牌
- python 并行执行_python 串行执行和并行执行实例
- 如何利用laragon框架制作一个简单的应用?
热门文章
- matlab从mp4文件中提取音频,如何提取mp4视频中的音频文件 将视频转换为MP3音频...
- 你有想过如何合适地给 JavaScript 变量命名吗?
- 为什么说软件测试很重要?
- 2022QS榜单发布!计算机专业排名MIT霸榜,清华排15,北大跌出TOP20
- Google发布Chrome Web Store应用商店
- Ncurses学习经历(九)屏幕操作
- 高程数据下载——DLR_SRTM_说明
- 学习《恋上数据结构与算法》目录索引 (持续更新中)
- SDM439/SDM429/SDM450 Sensors Overview (80-PF208-11)
- 手机上的机器学习资源!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现!