============= 后端_最热标签 ============= 每个标签对应一到多篇文章,所对应文章的数量即为该标签的热度。 1 标签数据访问 1.1 标签数据访问接口 /ysdblog-api/src/main/java/com/weihome/ysdblog/dao/mapper/TagMapper.java: public interface TagMapper extends BaseMapper { ... /** * 查询最热标签ID列表 */ public List findHottestTagIds(int limit); /** * 根据标签ID列表查询标签列表 */ public List findTagsByTagIds(List tagIds); ... } 1.2 标签数据访问实现 SQL> select tag_id from t_article_tag group by tag_id order by count(*) desc limit 5 SQL> select id, tag_name from t_tag where id in (2, 1) /src/main/resources/com/weihome/ysdblog/dao/mapper/TagMapper.xml: ... ... ... 2 标签服务 2.1 标签服务接口 /ysdblog-api/src/main/java/com/weihome/ysdblog/service/TagService.java: public interface TagService { ... /** * 查询最热标签 */ public Result hottest(int limit); ... } 2.2 标签服务实现 /ysdblog-api/src/main/java/com/weihome/ysdblog/service/impl/TagServiceImpl.java: ... public class TagServiceImpl implements TagService { ... @Override public Result hottest(int limit) { List tagIds = tagMapper.findHottestTagIds(limit); if (CollectionUtils.isEmpty(tagIds)) return Result.success(Collections.emptyList()); List tags = tagMapper.findTagsByTagIds(tagIds); return Result.success(copyList(tags)); } ... } 3 标签控制器 /ysdblog-api/src/main/java/com/weihome/ysdblog/controller/TagController.java: @RestController @RequestMapping("tag") public class TagController { @Autowired private TagService tagService; /** * 查询最热标签 */ @GetMapping("hottest") public Result hottest() { return tagService.hottest(5); } } 4 运行测试 Postman GET localhost:8888/tag/hottest ---------------------------------- { "success": true, "code": 200, "msg": "success", "data": [ { "id": 1, "tagName": "tag_a" }, { "id": 2, "tagName": "tag_b" } ] }