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());

 

posted @ 2020-12-02 10:44  donleo123  阅读(1686)  评论(0编辑  收藏  举报