『博客开发日记-后台』之分类和标签下拉选项列表接口的实现

本文最后更新于 2026年4月11日 晚上

获取分类和标签下拉选项列表接口的实现


获取分类和标签下拉选项列表接口的需求

根据分类和标签的id查询出所有状态正常的分类和标签条目就行

然后封装成对应的分类和标签Vo响应给前端

代码实现

先创建CategoryOptionVo和TagOptionVo

要注意的是因为前端用的el-select-v2 需要的是 {value, label} 格式

而后端的表和响应的数据是id和name

所以要用到 @JSONField 注解将参数转换成前端需要的参数再响应给前端

如下

1
2
3
4
5
6
7
8
9
10
11
@Data
@ApiModel(description = "分类选项")
public class CategoryOptionVo {
@ApiModelProperty(value = "分类ID")
@JSONField(name = "value")//转换成 value 再响应给前端
private Long id;

@ApiModelProperty(value = "分类名称")
@JSONField(name = "label")//转换成 label 再响应给前端
private String name;
}

1
2
3
4
5
6
7
8
9
10
11
@Data
@ApiModel(description = "标签选项")
public class TagOptionVo {
@ApiModelProperty(value = "标签ID")
@JSONField(name = "value")//转换成 value 再响应给前端
private Long id;

@ApiModelProperty(value = "标签名称")
@JSONField(name = "label")//转换成 label 再响应给前端
private String name;
}

关于分类要新建一个 CategoryController 来作为后台的接口控制器 然后在里面写上接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* 分类管理接口
*/
@RestController
@RequestMapping("/categories")
@Api(tags = "分类管理", description = "分类管理相关接口")
public class CategoryController
{
@Autowired
private AdminCategoryService adminCategoryService;

@GetMapping("/options")
@SystemLog(businessName = "分类下拉选项")
@ApiOperation(value = "分类下拉选项", notes = "获取分类下拉数据")
public ResponseResult getCategoryOptions()
{
return adminCategoryService.getCategoryOptions();
}
}

标签的 Controller 在前面已有 直接在里面写接口方法就行 这里就不贴上来了

下面直接上两个接口的实现代码

新建 AdminCategoryServiceImpl

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
/**
* 分类管理服务实现类
*
* @author mengze
*/
@Service
public class AdminCategoryServiceImpl implements AdminCategoryService
{
@Autowired
private CategoryService categoryService;

//获取分类下拉选择列表
@Override
public ResponseResult getCategoryOptions()
{
//根据分类id查询出所有分类选项
LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();

queryWrapper.eq(Category::getStatus, SystemConstants.STATUS_NORMAL)
.orderByDesc(Category::getId);
//封装成一个集合
List<Category> categoryList = categoryService.list(queryWrapper);

//转换成Vo
List<CategoryOptionVo> categoryOptionVoList = BeanCopyUtils.copyBeanList(categoryList, CategoryOptionVo.class);

return ResponseResult.okResult(categoryOptionVoList);
}
}


在 AdminTagServiceImpl 中也是大同小异

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//获取标签下拉选择列表
@Override
public ResponseResult getTagOptions()
{
//获取标签id
LambdaQueryWrapper<Tag> queryWrapper = new LambdaQueryWrapper<>();

queryWrapper.eq(Tag::getDelFlag, SystemConstants.NOT_DELETED)
.orderByDesc(Tag::getId);

List<Tag> tags = tagService.list(queryWrapper);

//封装成Vo
List<TagOptionVo> tagOptionVos = BeanCopyUtils.copyBeanList(tags, TagOptionVo.class);

return ResponseResult.okResult(tagOptionVos);
}

还有一些接口的新建和实现这里也不贴出来了 都是和前面一样的步骤


测试接口

分类下拉列表测试成功


标签下拉列表测试成功




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

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


预告

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

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

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


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


『博客开发日记-后台』之分类和标签下拉选项列表接口的实现
http://example.com/2026/04/11/『博客开发日记-后台』之分类和标签下拉选项列表接口的实现/
作者
云梦泽
发布于
2026年4月11日
更新于
2026年4月11日
许可协议