本文最后更新于 2025年12月6日 下午
分页查询文章列表的实现
分页查询文章列表的需求
在首页和分类页面都需要查询文章列表
首页:查询所有的文章
分类页面:查询对应分类下的文章
要求:
①只能查询正式发布的文章
②置顶的文章要显示在最前面
接口设计
要展示的字段有:标题,发布时间(预留最后更新时间),浏览量,文章的摘要,文章的缩略图,分类标签,文章id,分类id,页码,每页大小,total(总记录数,方面页面根据其判断是否请求传递下一页)等
然后创建接口
业务逻辑在ArticleServiceImpl中写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| @Override public ResponseResult articleList(Integer pageNum, Integer pageSize, Long categoryId) { LambdaQueryWrapper<Article> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(Objects.nonNull(categoryId) && categoryId > 0, Article::getCategoryId, categoryId);
lambdaQueryWrapper.eq(Article::getStatus, SystemConstants.ARTICLE_STATUS_NORMAL); lambdaQueryWrapper.orderByDesc(Article::getIsTop); Page<Article> page = new Page<>(pageNum, pageSize); page(page, lambdaQueryWrapper);
List<Article> articles = page.getRecords(); articles.stream() .map(article -> article.setCategoryName(categoryService.getById(article.getCategoryId()).getName())) .collect(Collectors.toList());
List<ArticleListVo> articleListVos = BeanCopyUtils.copyBeanList(page.getRecords(), ArticleListVo.class);
PageVo pageVo = new PageVo(articleListVos, page.getTotal()); return ResponseResult.okResult(pageVo); }
|
封装ArticleListVo,与PageVo
调试接口成功
配置分页拦截器来实现分页功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| @Configuration public class PaginationConfig {
@Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor()); return mybatisPlusInterceptor; } }
|
对FastJson进行配置
该配置写在WebConfig类里面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @Bean public HttpMessageConverter fastJsonHttpMessageConverters() { FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss"); SerializeConfig.globalInstance.put(Long.class, ToStringSerializer.instance); fastJsonConfig.setSerializeConfig(SerializeConfig.globalInstance); fastConverter.setFastJsonConfig(fastJsonConfig); HttpMessageConverter<?> converter = fastConverter; return converter; }
@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(fastJsonHttpMessageConverters()); }
|
PS:该系列只做为作者学习开发项目做的笔记用
不一定符合读者来学习,仅供参考
预告
后续会记录博客的开发过程
每次学习会做一份笔记来进行发表
“一花一世界,一叶一菩提”
版权所有 © 2025 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/