『博客开发日记』之根据标签id查询文章列表接口的实现

本文最后更新于 2026年3月22日 下午

根据标签id查询文章列表接口


根据标签id查询文章列表接口需求

要查修出该标签下有多少篇文章

该标签下没有文章时返回空结果

状态是正式发布的

置顶的文章要放在前面

分页查询

代码实现

下面之展示服务类实现

因为是和文章有关的,所以写在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
//根据标签id查询文章列表
@Override
public ResponseResult articleListByTagId(Long tagId, Integer pageNum, Integer pageSize)
{
//先通过ArticleTag关联表查询该标签下的所有文章ID
LambdaQueryWrapper<ArticleTag> articleTagWrapper = new LambdaQueryWrapper<>();
articleTagWrapper.eq(ArticleTag::getTagId, tagId);
List<ArticleTag> articleTagList = articleTagMapper.selectList(articleTagWrapper);

//获取文章ID列表
List<Long> articleIds = articleTagList.stream()
.map(ArticleTag::getArticleId)
.collect(Collectors.toList());

//查询条件
LambdaQueryWrapper<Article> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//如果有文章ID,则根据文章ID列表查询;否则查询条件会返回空结果
if (!articleIds.isEmpty()) {
lambdaQueryWrapper.in(Article::getId, articleIds);
} else {
//没有文章时返回空结果
lambdaQueryWrapper.eq(Article::getId, -1L);
}
//状态是正式发布的
lambdaQueryWrapper.eq(Article::getStatus, SystemConstants.ARTICLE_STATUS_NORMAL);
//置顶的文章要放在前面
lambdaQueryWrapper.orderByDesc(Article::getIsTop);
//分页查询
Page<Article> page = new Page<>(pageNum, pageSize);
page(page, lambdaQueryWrapper);

//查询categoryName
List<Article> articles = page.getRecords();
articles.forEach(article ->
article.setCategoryName(categoryService.getById(article.getCategoryId()).getName())
);

//封装查询结果为Vo
List<ArticleListVo> articleListVos = BeanCopyUtils.copyBeanList(page.getRecords(), ArticleListVo.class);

PageVo pageVo = new PageVo(articleListVos, page.getTotal());
return ResponseResult.okResult(pageVo);
}

PS:该系列只做为作者学习开发项目做的笔记用

不一定符合读者来学习,仅供参考


预告

后续会记录博客的开发过程

每次学习会做一份笔记来进行发表

“一花一世界,一叶一菩提”


版权所有 © 2025 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/


『博客开发日记』之根据标签id查询文章列表接口的实现
http://example.com/2026/03/22/『博客开发日记』之根据标签id查询文章列表接口的实现/
作者
云梦泽
发布于
2026年3月22日
更新于
2026年3月22日
许可协议