前后端分离之_后端_分类导航功能_就是_三级分类,表是无限极的设计

需求:

在这里插入图片描述

1. 数据库

设计原则:无限极分类
在这里插入图片描述

2, 接口

在这里插入图片描述

3,实现

3.1 pojo

在这里插入图片描述

在这里插入图片描述

3.2, dao 我用的是mybatis

在这里插入图片描述

3.3,service 用的example多条件查询

在这里插入图片描述


public List<Category> findCategorys(Integer parent_id) {


        Example example = new Example(Category.class);
        Example.Criteria criteria = example.createCriteria();
        // 添加所属一级分类条件
        criteria.andEqualTo("parent_id", parent_id);

        return categoryMapper.selectByExample(example);
    }

3.4 controller

在这里插入图片描述

  @GetMapping("/categorys")
    public ResponseEntity<Object> findAllCategorys(){
         //优化:取之前先去redis取出,redis取不到再去数据库
        String categorys = redisTemplate.opsForValue().get("category");
        if(categorys!=null&&!"".equals(categorys.trim())){
            return ResponseEntity.ok(categorys);
        }
        // 1. 查找一级分类
        List<Category> list1 = categoryService.findCategorys(0);
        // 2. 遍历一级分类,查找二级分类
        for(Category c1:list1){
            //3. c1.id就是二级分类的父id
            List<Category> list2 = categoryService.findCategorys(c1.getId());
            //4. list2就是当前一级的二级分类,将list2给c1的children
            c1.setChildren(list2);
            //5. 遍历二级分类list2,查找三级分类
            for(Category c2:list2){
                //6. 通过c2.id 获取三级分类的数据
                List<Category> list3 = categoryService.findCategorys(c2.getId());
                //7. 将list3给c2的children
                c2.setChildren(list3);
            }
        }
        // 8. 组装结果,返回
        BaseResult br = new BaseResult(0, "成功", list1);
        // 9. 放入redis
       redisTemplate.opsForValue().set("category",JSON.toJSONString(br));
        return ResponseEntity.ok(br);
    }


因为是基于restful风格,所以用postman测试一下后台,来确保后台数据是无误的
在这里插入图片描述

然后在看看Redis
在这里插入图片描述

后台测试成功
进行前后端联调
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/fhkkkbfgggjk/article/details/85237349