说明:
(1)本篇博客的核心是就一条:递归查询的解决套路;主要有两点:
● 由于接口文档,要求是返回的数据,需要是递归嵌套的数据;所以,要创建CategoryVO这个bean,去包装查到的数据;以满足接口对返回数据的格式的要求;
● 递归查询的逻辑;(这条尤为重要);
(2)本篇博客内容其实不难,但可能存在一定的理解难度;静下心来,仔细看,就很容易理解的;
目录
(1)前台的【分类列表(递归)】接口:在前台页面上的显示效果;
(3)接口文档分析:结果;(递归数据的分析;创建,承载递归数据的实体Bean:CategoryVO)
1.在CategoryController类中,创建前台商品分类目录的方法:listCategoryForCustomer()方法;
2.在CategoryServiceImpl实现类中,编写分页查询的方法listCategoryForCustomer();然后在CategoryService接口中,反向生成方法的声明;
(1)在CategoryServiceImpl实现类中,编写分页查询的方法listCategoryForCustomer();(递归查询:核心,重点!!!)
(2)然后在CategoryService接口中,反向生成方法的声明;
(1)在CategoryMapper接口中,定义【根据parent_id查询对应级别分类数据】的方法selectCategoriesByParentId();
(2)然后在CategoryMapper.xml中编写方法的SQL;
一:先看下接口文档和接口说明;
(1)前台的【分类列表(递归)】接口:在前台页面上的显示效果;
可以看到,我们这儿的【商品分类】需要按照层级关系,递归的查询出来;
(2)前台的【分类列表(递归)】接口:接口文档;
因为,这个接口是前台的,所以这个接口不需要是会员(包括管理员)登录;即,这个接口的url是【/category/list】,没有admin;
该接口返回的内容:
{ "status": 10000, "msg": "SUCCESS", "data": [ { "id": 3, "name": "新鲜水果", "type": 1, "parentId": 0, "orderNum": 1, "childCategory": [ { "id": 4, "name": "橘子橙子", "type": 2, "parentId": 3, "orderNum": 1, "childCategory": [ { "id": 19, "name": "果冻橙", "type": 3, "parentId": 4, "orderNum": 1, "childCategory": [] } ] }, { "id": 11, "name": "草莓", "type": 2, "parentId": 3, "orderNum": 2, "childCategory": [] }, { "id": 12, "name": "奇异果", "type": 2, "parentId": 3, "orderNum": 3, "childCategory": [] }, { "id": 14, "name": "车厘子", "type": 2, "parentId": 3, "orderNum": 4, "childCategory": [] }, { "id": 28, "name": "其他水果", "type": 2, "parentId": 3, "orderNum": 4, "childCategory": [] } ] }, { "id": 5, "name": "海鲜水产", "type": 1, "parentId": 0, "orderNum": 2, "childCategory": [ { "id": 7, "name": "螃蟹", "type": 2, "parentId": 5, "orderNum": 1, "childCategory": [] }, { "id": 8, "name": "鱼类", "type": 2, "parentId": 5, "orderNum": 2, "childCategory": [] }, { "id": 13, "name": "海参", "type": 2, "parentId": 5, "ord