商品分类递归查询Tree结构展示

商品分类递归查询Tree结构展示

商品分类递归查询Tree结构展示

商品分类数据结构:

create table tb_category(
	id int primary key auto_increment,
    name varchar(50),
    goods_num int,
    is_show char(1),
    is_menu char(1),
    seq int,
    parent_id int,
    template_id int
);

parent_id 父ID,自关联。

import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
/** * category实体类 * @author Administrator * */
@Table(name="tb_category")
public class Category implements Serializable{
   

	@Id
	private Integer id;//分类ID

	private String name;//分类名称

	private Integer goodsNum;//商品数量

	private String isShow;//是否显示

	private String isMenu;//是否导航

	private Integer seq;//排序

	private Integer parentId;//上级ID

	private Integer templateId;//模板ID

	//setXxx/getXxx 

}

前后端约定数据格式:

[
	{
   
        name:"一级菜单",
        menus:[
            {
   
                name:"二级菜单",
                menus:[
                   {
   
                        name:"三级菜单"
                   },
                    .........
                ]
            }
        ]
    }
 
]
 //这种数据格式集合里面嵌套Map.

1.先查询出符合条件(符合条件是is_show=1,表示展示)的数据 List<Category> categoryList

2.通过递归形式进行数据整理。

​ (1)用什么数据类型进行接收:List<Map>

​ (2)写一个方法使用递归来整理,传递参数为categoryListparentId=0

​ (3)遍历categoryList 得到每个category中的id

​ (4)idparentId进行比较,如果相等 放入Map,在放入”menus”的时候在调用这个方法,此时就是在递归了。

Mapp用的是通用Mapper/数据库使用的是Mysql

 public List<Map> findCategoryTree() {
    
	//先查询符合条件的所有分类
    Example example=new Example(Category.class); 
    Example.Criteria criteria = example.createCriteria(); 
    criteria.andEqualTo("isShow","1");//1为显示 ;0 不显示 
    //排序
    example.setOrderByClause("seq"); 
    List<Category> categories = categoryMapper.selectByExample(example); 
	
    //parentId = 0 第一次 传递参数 0 表示一级, 查看表中的数据。
    return findByParentId(categories,0); 

}
//数据整理 使用递归
private List<Map> findByParentId(List<Category> categoryList, Integer 

parentId){
    

    List<Map> mapList=new ArrayList<Map>(); 

    for(Category category:categoryList){
    

        if(category.getParentId().equals(parentId)){
    

            Map map =new HashMap(); 

            map.put("name",category.getName()); 

            map.put("menus",findByParentId(categoryList,category.getId())); 

            mapList.add(map); 

        } 

    }

    return mapList; 

} 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100765.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号