• Java获取文章的上一篇/下一篇


    思路:每次查询详情返回三条数据信息,当前对象,上一条与下一条的Id和标题

    代码实现如下:

    1、PreAndNextModel

     1 public class PreAndNextModel {
     2     /**
     3      * 上一篇或者下一篇的id
     4      */
     5     private Integer id;
     6     /**
     7      * 上一篇或者下一篇的标题
     8      */
     9     private String title;
    10 
    11     public Integer getId() {
    12         return id;
    13     }
    14 
    15     public void setId(Integer id) {
    16         this.id = id;
    17     }
    18 
    19     public String getTitle() {
    20         return title;
    21     }
    22 
    23     public void setTitle(String title) {
    24         this.title = title;
    25     }
    26 }

    2、获取上一篇

     1 @Override
     2 public PreAndNextModel getPreModel(Integer productId, Integer proCategoryId) {
     3 
     4     IProductDao iProductDao = new ProductDaoImpl();
     5     //new model
     6     PreAndNextModel pre = new PreAndNextModel();
     7 
     8     Integer preId = null;
     9     List<ProductDto> list;
    10     //查询该分类下的集合
    11     list = iProductDao.findAllByCategoryId(proCategoryId);
    12     //获取集合长度
    13     int count = list.size();
    14     //将该分类下的Id放入数组当中
    15     int[] intId = new int[count];
    16     for (int i = 0; i < count; i++) {
    17         intId[i] = list.get(i).getId();
    18     }
    19     //获取当前Id的上一个Id下标
    20     for (int j = 0; j < count; j++) {
    21         if (intId[j] == productId) {
    22             if (j != 0) {
    23                 preId = intId[j - 1];
    24             }
    25         }
    26     }
    27     isPreAndNext(iProductDao, pre, preId);
    28     return pre;
    29 }

    3、获取下一篇

     1 @Override
     2 public PreAndNextModel getNextModel(Integer productId, Integer proCategoryId) {
     3     IProductDao iProductDao = new ProductDaoImpl();
     4     PreAndNextModel next = new PreAndNextModel();
     5 
     6     Integer nextId = null;
     7     List<ProductDto> list;
     8     //查询该分类下的集合
     9     list = iProductDao.findAllByCategoryId(proCategoryId);
    10     //获取集合长度
    11     int count = list.size();
    12     //将该分类下的Id放入数组当中
    13     int[] intId = new int[count];
    14     for (int i = 0; i < count; i++) {
    15         intId[i] = list.get(i).getId();
    16     }
    17     //获取当前Id的下一个Id下标
    18     for (int j = 0; j < count; j++) {
    19         if (intId[j] == productId) {
    20             //判断是不是最后一个下标
    21             if (j != (count - 1)) {
    22                 nextId = intId[j + 1];
    23             }
    24         }
    25     }
    26     isPreAndNext(iProductDao, next, nextId);
    27     return next;
    28 }

    4、判断上一篇或者下一篇是否存在

     1 private void isPreAndNext(IProductDao iProductDao, 
     2              PreAndNextModel pre, Integer preId) {
     3     ProductDto productDto;
     4     if (preId == null) {
     5         pre.setId(null);
     6         pre.setTitle("无");
     7     } else {
     8         //将上一页Id和标题赋值返回
     9         productDto = iProductDao.findById(preId);
    10         pre.setId(productDto.getId());
    11         pre.setTitle(productDto.getName());
    12     }
    13 }

    5、调用返回

    1 //上一个
    2 PreAndNextModel pre = iProductService.getPreModel(productId, 
    3                 productModel.getProCategoryId());
    4 //下一个
    5 PreAndNextModel next = iProductService.getNextModel(productId, 
    6                 productModel.getProCategoryId());
    作者:donleo123
    本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。
  • 相关阅读:
    接口
    多态
    static的用法
    Person类中多个构造方法和测试
    曹操外卖实现功能
    曹操外卖数据表设计
    java中 try catch finally和return联合使用时,代码执行顺序的小细节
    GenerationType四中类型
    spring boot
    VMware修改为静态ip
  • 原文地址:https://www.cnblogs.com/donleo123/p/14072408.html
Copyright © 2020-2023  润新知