三级分类java代码

电商项目里常见的三级分类,代码如下:


首先,Category实体类:

public class Category {

    private Integer id;
    private Integer pid;   // 父分类id
    private Integer c_level;   // 本分类级别
    private String c_name;    // 本分类名称
    private Integer sort;    // 排序字段
    private List<Category> children;   // 子分类集合

    public Category(Integer id, Integer pid, Integer c_level, String c_name, Integer sort) {
        this.id = id;
        this.pid = pid;
        this.c_level = c_level;
        this.c_name = c_name;
        this.sort = sort;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public List<Category> getChildren() {
        return children;
    }

    public void setChildren(List<Category> children) {
        this.children = children;
    }

    public Integer getPid() {
        return pid;
    }

    public void setPid(Integer pid) {
        this.pid = pid;
    }

    public Integer getC_level() {
        return c_level;
    }

    public void setC_level(Integer c_level) {
        this.c_level = c_level;
    }

    public String getC_name() {
        return c_name;
    }

    public void setC_name(String c_name) {
        this.c_name = c_name;
    }

    public Integer getSort() {
        return sort;
    }

    public void setSort(Integer sort) {
        this.sort = sort;
    }

    @Override
    public String toString() {
        return "Category{" +
                "id=" + id +
                ", pid=" + pid +
                ", c_level=" + c_level +
                ", c_name='" + c_name + '\'' +
                ", sort=" + sort +
                ", children=" + children +
                '}';
    }
}

然后是三级分类代码,最终要按一级分类返回,每个一级分类下带着自己的二级分类,每个二级分类下也携带三级分类。 

import com.alibaba.fastjson.JSON;

import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;


public class TestCategorization {

    public static void main(String[] args) throws Exception {

        Category c1 = new Category(1,0,1,"一级分类1",0);
        Category c2 = new Category(2,0,1,"一级分类2",0);

        Category c3 = new Category(3,1,2,"二级分类1",0);
        Category c4 = new Category(4,1,2,"二级分类2",0);
        Category c5 = new Category(5,1,2,"二级分类3",0);
        c3.setSort(0);
        c4.setSort(5);
        c5.setSort(2);

        Category c6 = new Category(6,2,2,"二级分类4",0);
        Category c7 = new Category(7,2,2,"二级分类5",0);

        Category c8 = new Category(8,3,3,"三级分类1",0);
        Category c9 = new Category(9,3,3,"三级分类2",0);
        Category c10 = new Category(10,4,3,"三级分类3",0);
        Category c11 = new Category(11,4,3,"三级分类4",0);
        Category c12 = new Category(12,5,3,"三级分类5",0);
        Category c13 = new Category(13,5,3,"三级分类6",0);
        Category c14 = new Category(14,5,3,"三级分类7",0);
        Category c15 = new Category(15,6,3,"三级分类8",0);
        Category c16 = new Category(16,6,3,"三级分类9",0);
        Category c17 = new Category(17,7,3,"三级分类10",0);
        Category c18 = new Category(18,7,3,"三级分类11",0);

        List<Category> list = new LinkedList<>();

        list.add(c1);
        list.add(c2);
        list.add(c3);
        list.add(c4);
        list.add(c5);
        list.add(c6);
        list.add(c7);
        list.add(c8);
        list.add(c9);
        list.add(c10);
        list.add(c11);
        list.add(c12);
        list.add(c13);
        list.add(c14);
        list.add(c15);
        list.add(c16);
        list.add(c17);
        list.add(c18);

        List<Category> result = listInTree(list);
        System.out.println(JSON.toJSON(result));

    }

    private static List<Category> listInTree(List<Category> list) {

        return list.stream().filter(e->e.getC_level()==1)
                .peek(e-> e.setChildren(getChildren(e, list)))  // 注意peek方法用来遍历操作!
                .sorted(Comparator.comparingInt(Category::getSort))  
                .collect(Collectors.toList());
    }

    private static List<Category> getChildren(Category parent, List<Category> list) {

        return list.stream().filter(e -> e.getPid().equals(parent.getId()))
                .peek(e->e.setChildren(getChildren(e, list)))
                .sorted(Comparator.comparingInt(Category::getSort))
                .collect(Collectors.toList());

    }
}

运行结果转为了Json,可用工具查看。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Java电商项目中,商品服务三级分类删除代码实现可以参考以下步骤: 1. 首先需要在数据库中删除该三级分类的记录,可以通过以下SQL语句实现: ``` DELETE FROM category WHERE id = #{id} AND level = 3; ``` 其中,`id`表示三级分类的ID,`level`表示分类级别。 2. 在商品服务的实现类中添加删除三级分类的方法,调用以上SQL语句实现删除操作。例如: ```java public class CategoryServiceImpl implements CategoryService { @Autowired private CategoryMapper categoryMapper; @Override public int deleteCategory(Long id) { Category category = categoryMapper.selectByPrimaryKey(id); if (category == null || category.getLevel() != 3) { return 0; } return categoryMapper.deleteByPrimaryKey(id); } //... } ``` 其中,`categoryMapper`为MyBatis的Mapper接口,`selectByPrimaryKey()`方法用于根据ID查询分类信息,`deleteByPrimaryKey()`方法用于根据ID删除分类记录。在删除操作之前,需要判断该分类是否存在且为三级分类。 3. 在Controller中添加删除三级分类的接口,例如: ```java @RestController @RequestMapping("/category") public class CategoryController { @Autowired private CategoryService categoryService; //... @DeleteMapping("/{id}") public Result deleteCategory(@PathVariable Long id) { int count = categoryService.deleteCategory(id); if (count == 0) { return Result.failure("删除失败"); } return Result.success(); } } ``` 其中,`@DeleteMapping("/{id}")`表示接收DELETE请求,并且URL中的`{id}`参数为要删除的分类ID。`deleteCategory()`方法调用商品服务中的删除三级分类的方法,并返回操作结果。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值