商品分类递归查询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; 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • awk 数组排序多种实现方法「建议收藏」

    awk 数组排序多种实现方法「建议收藏」由于awk数组,是关联数组。for…in循环输出时候,默认打印出来是无序数组。 [chengmo@localhost~]$awk’BEGIN{info=”thisisatest”;split(info,tA,””);for(kintA){printk,tA[k];}}’4test1this2is3a 如果需要按照顺序输出,通过

    2022年7月19日
    16
  • Apache配置详解(最好的APACHE配置教程)

    Apache配置详解(最好的APACHE配置教程)Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改。主站点的配置(基本配置)(1)基本配置:ServerRoot”/mnt/software/apache2″#你的apache软件安装的位置。其它指定的目录如果没有指定绝对路径,则目录是相对于该目录。PidFilelogs/httpd.pid#第一个httpd进程(所有其他进程的父

    2022年7月14日
    20
  • list转json字符串

    list转json字符串使用Gson把list转成json字符串com.google.gson.Gson@GetMapping(“/valueTest”)publicStringvalueTest(){List<Map<String,Object>>list=newArrayList<>();Map<String,Object>map1=newHashMap<>();map1

    2022年10月18日
    2
  • 【更新】互联网公司可投之参考[通俗易懂]

    【更新】互联网公司可投之参考[通俗易懂]【更新】互联网公司可投之参考以下内容收集于网络资料,仅供参考。如有误请指正~,未经允许,禁止转载。不介意的话,放个自己的字节内推,投递链接https://jobs.toutiao.com/s/dp5bxEK,内推码:AJCWZR2北京公司上海公司广州公司深圳公司武汉公司杭州公司成都公司成都公司长沙公司…小伙伴们觉得有用的话可以关注点赞收藏,后面持续更新~以下内容收集于网络资料,仅供参考。如有误请指正~,未经允许,禁止转载。#目前已更新:北京、上海、广州、深圳、武汉、杭州、成都、南京、长沙…不介意的

    2022年5月14日
    69
  • 亲测无限坐席在线客服系统源码,基于ThinkPHP的一款在线客服系统源码

    亲测无限坐席在线客服系统源码,基于ThinkPHP的一款在线客服系统源码源码简介东西没问题,和别人换的本来说是多语言带机器人翻译之类的,给了个这。。。直接一键安装的,启动两个端口就行了,安装倒是简单编号:ym270品牌:无语言:PHP大小:34.5MB类型:在线客服系统支持:pc+wap亲测无限坐席在线客服系统源码,基于ThinkPHP的一款在线客服系统源码,直接一键安装的,启动两个端口就行了。安装教程:PHP5.6+MySQL5.5+设置网站运行目录为public,配置伪静态规则为thinkphp访问/install.php安装即可亲测无限坐席

    2022年7月19日
    18
  • 十款磁盘碎片整理工具

    十款磁盘碎片整理工具说到磁盘整理工具,应该说说磁盘碎片的定义,为什么磁盘碎片会对系统性能造成影响。首先我不是专业的电脑人员,对很专业的理论知识不懂,在这里只可以用很通俗很日常的语言来表达。其实磁盘碎片应该称为文件碎片,是因为文件被分散保存到整个磁盘的不同地方,而不是连续地保存在磁盘连续的簇中形成的。为什么这些碎片多了,会对系统性能造成影响呢?打个比方,你的房间你很久没有整理和清洁了,原本有条…

    2022年6月25日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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