实现文章上一篇和下一篇的两种方式:

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

实现文章上一篇和下一篇的两种方式相关推荐

  1. linux下安装mysql的方式_linux下安装mysql的两种方式

    linux下安装mysql的两种方式 1 源码安装 1 创建mysql用户: useradd mysql passwd mysql 2 解压缩下载的mysql包: tar -zxvf mysql-5. ...

  2. ubuntu下创建定时任务的两种方式及常见问题解决方案

    ubuntu下创建定时任务的两种方式及常见问题解决方案 参考文章: (1)ubuntu下创建定时任务的两种方式及常见问题解决方案 (2)https://www.cnblogs.com/maboii/p ...

  3. Android10下wifi连接的两种方式:点对点连接和外网连接

    因为Android下的API总是在变,权限越来越少.导致出现的问题层出不穷,所以我们只好按照官方手册去开发了. 在看了手册后,我们知道连接网络有两种: 1.点对点连接,意思就是我们直接去连接自己指定的 ...

  4. vue 如何将参数放到连接上_通过Vue路由传参的两种方式及Vue组件中接收参数的方式...

    1. Vue传参方式 1.1 通过动态路由传参 我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件.例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染.那 ...

  5. Finereport 设置下拉框的两种方式

    执行结果. 第一种方式:在模板数据集查询里面添加Where条件: 1.在数据集中添加Sql语句: SELECT * FROM 订单 SELECT * FROM 订单 where 货主地区='${dq} ...

  6. 中级篇——树莓派系统备份恢复的两种方式

    树莓派系统备份恢复 方式一: 使用树莓派烧录工具,Win32DiskImager 工具的读取功能,如下图.优点是操作简单,缺点也很明显,因为是全盘读取,所以读取的备份文件非常大,不利于传播分享.所以p ...

  7. python获取文件夹下所有文件的两种方式

    需求:给你一个指定的文件夹路径,让你得到该路径下的所有文件,在这里我是用递归去实现的. 方法1:递归操作,代码可读性强,但是效率太慢 直接上代码: import osdef list_dir(text ...

  8. 下拉框数据绑定两种方式

    1.利用cs包,DataAccess.cs #region string m_str = @"select sname from service group by sname"; ...

  9. php ThinkPHP文章上一篇、下一篇解决方案

    在平时的项目中,我们常常会遇到下述的一种情况: 在文章详情页的底部位置,有上一篇.下一篇文章. 初次遇到此类问题,习惯性的按照前辈的处理思路 http://www.jb51.net/article/5 ...

  10. DEDECMS关于文章上一篇和下一篇标题长度的设置方法

    dedecms获取上一篇.下一篇文章的标签分别为:{dede:prenext get='pre'/}和{dede:prenext get='next'}.那么如何才能通过标签来控制文章标题的长度呢?其 ...

最新文章

  1. SpringCloud 之 Zuul 网关搭建及配置
  2. 墨瞳漫画h5一期 vuejs总结
  3. 企业壳的反调试及Hook检测分析
  4. 通讯故障_伦茨lenze全数字直流调速器通讯故障维修经验很丰富
  5. 3d数学基础图形与游戏开发 英文版_1850款文字标题字幕条,AE图形预设包,logo生成神器...
  6. 阿里云数加产品家族图首次亮相
  7. Faiss源码剖析:类结构分析
  8. 《代码大全》代码生成
  9. 浅谈API测试与UI Auomation一点心得
  10. SpringBoot 嵌入式web容器的启动原理
  11. matlab引擎下载,安装用于 Python 的 MATLAB 引擎 API
  12. es like模糊匹配_Elastic search模糊匹配,精确匹配显示在前
  13. 一个码稿人自述:什么样的文档产品适合我?|深度吐槽
  14. ssh 所选的用户密钥未在远程主机上注册
  15. 学硕停招,985高校这些专业开始只留专硕
  16. PLC通讯实现-C#实现欧姆龙以太网通讯FINS(二)
  17. 2014-2015 少年辛苦终身事,莫向光阴惰寸功
  18. Linux人机界面用什么软件,浙江Linux人机界面品牌,人机界面界面设计品牌
  19. python 并行执行_python 串行执行和并行执行实例
  20. 如何利用laragon框架制作一个简单的应用?

热门文章

  1. matlab从mp4文件中提取音频,如何提取mp4视频中的音频文件 将视频转换为MP3音频...
  2. 你有想过如何合适地给 JavaScript 变量命名吗?
  3. 为什么说软件测试很重要?
  4. 2022QS榜单发布!计算机专业排名MIT霸榜,清华排15,北大跌出TOP20
  5. Google发布Chrome Web Store应用商店
  6. Ncurses学习经历(九)屏幕操作
  7. 高程数据下载——DLR_SRTM_说明
  8. 学习《恋上数据结构与算法》目录索引 (持续更新中)
  9. SDM439/SDM429/SDM450 Sensors Overview (80-PF208-11)
  10. 手机上的机器学习资源!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现!