查询多级商品分类信息(这里演示3级商品分类信息查询,也附带性能低下但简单的查询)

SQL实战:从PTA数据库题目看多表连接查询的5种常见场景 本文通过解析PTA数据库平台的实战题目,系统梳理了SQL多表连接查询的五大核心应用场景:关联信息查询、聚合分组统计、嵌套集合比较、视图封装使用及综合高级筛选。文章结合具体SQL命令示例,深入剖析了INNER JOIN、GROUP BY、子查询等关键技术的使用技巧与性能优化要点,旨在帮助读者从刷题中提炼出应对真实开发需求的通用方法论。 阅读详情

流程:

​
package com.jt.service;

import com.jt.mapper.ItemCatMapper;
import com.jt.pojo.ItemCat;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;

/*注释service层*/
@Service
public class ItemCatServiceImpl implements ItemCatService{

    @Autowired
    private ItemCatMapper itemCatMapper;

    /**
     *  业务:Map<parentId,List<ItemCat>>
     *  思路:
     *      判断Map中是否有key
     *      true:  获取list集合,将自己追加到集合中
     *      false: new List集合,将自己作为第一个元素保存,之后存储map
     */

    /**本方法用于根据ParentId作为key 使用Map存储数据表数据,
     * 一把获取数据库所有数据,然后在service层拼接*/
    public Map<Integer,List<ItemCat>> getMap(){
        /*1.创建一个Map类型对象*/
        Map<Integer,List<ItemCat>> map = new HashMap<>();
        /*2.查询所有数据表中信息存到集合中*/
        List<ItemCat> list = itemCatMapper.findItemCatList();
        /*3.遍历所有数据*/
        for (ItemCat itemCat : list){
            /*4.从数据表中数据获取parentId作为Map的Key值*/
            int key = itemCat.getParentId();
            /*5.存在parentId作为key值的,则*/
            if(map.containsKey(key)){
                /*6.则通过key获取map中的value,value是一个List集合,可以用.add存很多数据*/
                map.get(key).add(itemCat);
            }else{
                /*7.不存在则创建一个ArrayList集合,*/
                List<ItemCat> tempList = new ArrayList<>();
                /*8.集合存入数据表一段数据*/
                tempList.add(itemCat);
                /*9.然后把key和存好一段数据的集合存到作为value存到map集合进行下次遍历*/
                map.put(key,tempList);
            }
        }
        /*10.这个方法返回一个整理好根据parentId分类好的map集合*/
        return map;
    }


    /**
     * 思路:
     *     1.获取三级商品分类信息
     *     2.先应该获取2级商品分类信息
     *     口诀: 判断为null 使用||,
     *          判断非null 使用&&
     * @param map
     * @return
     */
    /*24.接收整理好根据parentId分类所有数据的map集合*/
    private List<ItemCat> getThreeList(Map<Integer, List<ItemCat>> map) {
        /*25.先查询一级和二级的数据,获取的是存好二级数据的一级数据的集合*/
        List<ItemCat> oneList = getTwoList(map);
        /*26.遍历一级数据集合,获取二级数据集合独享*/
        for (ItemCat oneItemCat : oneList){
            /*27.获取单个二级菜单对象, 二级数据可能为null*/
            List<ItemCat> twoList = oneItemCat.getChildren();
            /*28.判断二级数据是否为空*/
            if(twoList == null || twoList.size()==0)
                /*如果为空则直接跳过执行下一次循环执行下一次循环,不获取这个二级菜单数据*/
            continue;
            /*29.如果二级数据不为空则遍历出这个二级数据*/
            for (ItemCat twoItemCat : twoList){
                /*30.获取这个二级菜单的id*/
                int twoId = twoItemCat.getId();
                /*31.根据二级菜单Id,查询对应的三级数据存到集合*/
                List<ItemCat> threeList = map.get(twoId);
                /*32.将一个个三级菜单存到二级菜单中*/
                twoItemCat.setChildren(threeList);
            }
        }
        /*33.返回存好二级菜单和三级菜单的一级菜单*/
        return oneList;
    }
/*16.传入整理好根据parentId分类好的map集合为参数*/
    private List<ItemCat> getTwoList(Map<Integer, List<ItemCat>> map) {
        /*17.查询一级数据*/
        List<ItemCat> oneList = map.get(0);
        /*18.遍历一级数据*/
        for (ItemCat oneItemCat : oneList){
            /*19.获取一级菜单id*/
            int id = oneItemCat.getId();
            /*20.根据1级菜单Id,查询对应的二级数据存到集合*/
            List<ItemCat> twoList = map.get(id);
            /*21.将集合对象一个个存到一级菜单中*/
            oneItemCat.setChildren(twoList);
        }
        /*22.返回存好的一级菜单*/
        return oneList;
    }





    /**完成业务方式:使用for循环,第一次读取数据库地拼接一级数据和二级数据,二级数据和三级数据
     * 本方法理解简单,但需要后端和数据库来回读取拼接,效率低*/
    /*@Override
    public List<ItemCat> findItemCatList(Integer level) {
        long startTime = System.currentTimeMillis();
        //1.查询一级商品分类信息
        int parentId = 0;
        List<ItemCat> oneList = itemCatMapper.findItemCatByParentId(parentId);
        //2.查询二级商品分类信息
        for (ItemCat oneItemCat : oneList){//100条
            //2.1 根据一级的Id 查询二级的数据
            int oneId = oneItemCat.getId();
            List<ItemCat> twoList = itemCatMapper.findItemCatByParentId(oneId);
            //3.查询三级商品分类信息
            for (ItemCat twoItemCat : twoList){//100条
                //3.1 根据二级Id,查询三级数据
                int twoId = twoItemCat.getId();
                List<ItemCat> threeList = itemCatMapper.findItemCatByParentId(twoId);
                twoItemCat.setChildren(threeList);
            }
            oneItemCat.setChildren(twoList);
        }
        long endTime = System.currentTimeMillis();
        System.out.println("耗时:"+(endTime - startTime)+"毫秒!!");
        return oneList;
    }*/
}

​

删除三级分类信息的一级分类信息

说明:删除一级信息时,需要删除一级信息对应的二级信息,二级信息对应的三级信息

<delete id="deleteItemCat1">
        <!--执行删除sql-->
        delete from item_cat
           where
           <!--通过一级id作为父级id,找到二级菜单所有id作为三级菜单的父级id作为查找条件找到到所有的三级菜单-->
                parent_id in
                (select id from item_cat where parent_id=#{id})
           or
           <!--通过一级id作为父级id,找到 二级菜单所有数据-->
            parent_id=#{id}
           or
           <!--通过传进来的id找到一级菜单所有数据-->
            id=#{id}
    </delete>

淘宝商品分类数据库-最新,包含一级类目 二级类目 三级类目 立即下载

相关推荐

激光工程师必备:5个ABCDRez在谐振腔设计中的实战技巧(含热效应处理)

本文为激光工程师分享了5个利用ABCDRez矩阵光学工具进行谐振腔设计的实战技巧,重点涵盖热效应处理、模式匹配优化与稳定性分析。通过建立参数化模型、动态热透镜补偿、模式匹配仿真及灵敏度分析,帮助工程师实现从“黑箱”到“白盒”的腔体设计与调试,提升激光器设计的鲁棒性与效率。

k6l7m8n9的博客 706

SpringBoot查找多级商品方案【一次sql查询所有数据,循环处理分层逻辑】

【代码】SpringBoot查找多级商品方案【一次sql查询所有数据,循环处理分层逻辑】

weixin_43837268的博客 430

算法之动态规划(DP)求解完全背包问题

算法之动态规划(DP)求解01背包问题 上面这篇文章主要讲解了01背包问题和动态规划算法,如果你不了解动态规划算法,建议先浏览一下这篇文章熟悉一下,因为,本文的算法思想是基于这篇文章的。 1、什么是完全背包问题? **01背包问题:**有一个背包的容积为V,有N个物品,每个物品的体积为v[i],权重为w[i],每个物品只能取1次放入背包中,背包所有物品权重和最大是多少? 完全背包: 有一个背包的容积为V,有N个物品,每个物品的体积为v[i],权重为w[i],每个物品可以取无限次放入背包中,背包所有物品权重和

PRML_MAN的博客 2万+

java查询三级树(三级目录)

背景: 三级树实现效果 这里只介绍,查询数据库,构建三级目录的后端业务逻辑 1.创建查询类(对应数据库需要查出的字段) @Data @AllArgsConstructor @NoArgsConstructor public class ColumnTree { private Integer value; //当前标签的id private String label; private Integer parentId;//当前标签的父id private List<

weixin_43332934的博客 3303

Ubuntu20.04安装Ceres库

ceres真难安装。

little_white138的博客 8379

服务器卡死排查实战:从现象分类到根因定位的完整手册

服务器卡死是运维中最令人头疼的故障之一,从游戏圈吐槽的“土豆服务器”到生产环境中的Linux系统无响应、rsync复制挂起,本质都是系统或进程失去正常响应能力。其原理通常涉及CPU、内存、磁盘IO或网络资源耗尽,以及内核和驱动异常。掌握系统化的排查方法,能够帮助工程师快速定位根因、缩短故障时间,避免盲目重启。本文从资源、层级、场景等多维度分类,结合top、dmesg、strace等工具,梳理一套从现象确认、指标收集、日志分析到进程定位的实战排查流程,并覆盖常见高频场景与预防治理建议。无论你是运维新手还是老手

weixin_33851177的博客 374

java 异步编排_34、前端基础-ES6-promise异步编排

大型分布式架构电商平台,技术多面、业务深入,全网无出其右。技术涵盖:微服务架构+分布式+全栈+集群+部署+自动化运维+可视化CICD,对标阿里P6/P7,冲击40-60w年薪。项目由业务集群系统+后台管理系统构成,打通了分布式开发及全栈开发技能,包含前后分离全栈开发、Restful接口、数据校验、网关、注册发现、配置中心、熔断、限流、降级、链路追踪、性能监控、压力测试、系统预警、集群部署、持续集成...

weixin_36241866的博客 229

QuickFix Java 讲解(一)概述、下载方法,和协议内容

本系列力求手把手教你怎样利用QuickFix Java 搭建自己的 FIX 协议收法平台,以及其中的注意事项。 所有源码的地址(免费): https://github.com/zongzhec/QuickFixPractise 1. 什么是FIX,QuickFix,Quick Java? 1.1. 什么是FIX 官网以及其他翻译自官网的帖子都太官方了,这里我们设想一个情景: 你是一个交易员,现在客户打电话来让你下个单买点股票。你啪啪啪的在你的机器上熟练地输入了下单指令。系统显示:成...

4571

java stream流递归实现树形结构

sql 测试数据: DROP TABLE IF EXISTS `pms_category`; CREATE TABLE `pms_category` ( `cat_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类id', `name` char(50) DEFAULT NULL COMMENT '分类名称', `parent_cid` bigint(20) DEFAULT NULL COMMENT '父分类id', `cat_leve

weixin_38982591的博客 1312

virtuoso--DFF

27-实验课-std_cell2

qq_61440044的博客 2003

Python爬虫实战:逆向工程与异步处理攻克Pinterest无限滚动瀑布流

我们将从零开始,逐步分析其数据接口,构建一个功能完整的爬虫,并深入探讨反爬虫策略的应对、性能优化以及数据存储等高级主题。: 在实际爬取中,你需要先访问一次Pinterest主页,获取初始的Cookie和CSRF Token,然后再发起API请求。: Python爬虫,Pinterest,无限滚动,瀑布流,异步IO,httpx,逆向工程,API接口,动态内容,反爬虫。你会很快发现一些关键的请求模式。:页面初始加载有限内容,随着用户滚动,新的图片块通过AJAX动态加载,实现“永无止境”的浏览。

2201_76125261的博客 551

分类查询的理解与实现步骤

对于分类来说,一般包括一级分类,二级分类,三级分类,

weixin_47741014的博客 1571

ESP32-IDF开发之旅 外设篇④ 串口通信 Uart

ESP32-S3 UART串口通信详解 本文介绍了ESP32-S3的UART串口通信配置流程,涵盖硬件引脚分配、参数设置、数据收发等关键步骤。

单片机菜鸟哥的博客 495

JAVA计算机毕业设计基于web的家居智慧销售系统(附源码+springboot+开题+论文)

后端SPRINGBOOT框架结合了Spring的依赖注入和事务管理、SpringMVC的模型-视图-控制器架构以及MyBatis的数据持久化功能,为后端开发提供全面的支持。销售档案记录模块的构建,记录用户的购买历史、评价等信息,为后续的个性化推荐和服务提供支持。通过该系统的应用,希望能够提高家居销售行业的整体竞争力,推动家居产业的可持续发展。[6] 刘震林, 喻春梅. 基于MVC模式的JAVA Web开发与实践应用研究[J]. 网络安全技术与应用, 2021, (01): 57-58.

sryue06的博客 1073

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机毕业设计springboot便民社区服务平台 社区生活服务智能终端 社区生活服务一体化平台

计算机毕业设计springboot便民社区服务平台7ond39(配套有源码 程序 mysql数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联xi 可分享在当今快节奏的都市生活中,居民对于便捷、高效的生活服务需求日益增长。社区作为人们生活的基本单元,承载着居民日常生活的诸多需求。然而,传统的社区服务模式存在着信息不对称、服务效率低下、资源分散等问题,无法充分满足居民的多样化需求。因此,构建一个集多种服务功能于一体的便民社区服务平台显得尤为必要。

计算机程序源码 1023

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SSM车辆维修管理系统0f0bg(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

本文为 SSM 车辆维修管理系统开题报告,针对传统维修门店管理效率低等问题,设计涵盖用户、商品分类、商品信息、故障信息、维修订单模块的系统。阐述研究背景意义、国内外现状,明确目标内容、方法路线等,论证可行性,旨在为门店提供高效数字化管理方案。

W321468的博客 798

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

基于django+vue基于智能推荐的车辆交易管理系统【开题报告+程序+论文】计算机毕设

研究背景 随着汽车市场的蓬勃发展和消费者购车需求的日益增长,车辆交易活动变得愈发频繁和复杂。传统的车辆交易方式往往依赖于线下实体店或中介服务,存在信息不对称、交易流程繁琐、效率低下等问题。为了解决这些问题,提高车辆交易的透明度和效率,开发一套集用户管理、商品分类、商品信息展示等功能于一体的车辆交易管理系统显得尤为重要。该系统旨在通过数字化手段,实现车辆信息的快速发布、精准匹配与便捷交易,为买卖双方提供一个高效、安全的交易平台。 研究意义 本研究的意义在于推动车辆交易行业的数字化转型,提升交易效率与服务质量

图楠计算机_毕设 763

ssm大学生掌上校园appo2kxj【独家源码】 应对计算机毕业设计困难的解决方案

选题背景: 随着信息技术的快速发展和智能手机的普及,大学生掌上校园app应运而生。传统的校园管理方式往往依赖于纸质通知、线下办理等手段,存在信息传递不及时、效率低下等问题。为了解决这一问题,大学生掌上校园app应运而生。该app利用现代信息技术手段,将校园管理的各项服务集中在一个平台上,方便学生进行课程查询、成绩查看、社团活动报名等操作,提供便捷高效的校园生活服务。 选题意义: 首先,大学生掌上校园app可以提供便捷的信息查询和管理功能。传统的校园管理方式往往需要学生亲自到相关部门或办公室进行查询和办理,

如梧程序设计 890

计算机毕业设计springboot基于JavaScript的动物管理系统 基于Spring Boot框架的动物信息管理平台设计与实现 Spring Boot驱动的动物管理系统:功能与架构分析

本文介绍了一个基于SpringBoot和JavaScript的动物管理系统,该系统旨在优化传统动物管理模式。系统包含用户管理、动物信息管理、领养预约等功能模块,采用Mysql数据库和Java技术实现。文章从技术、操作、经济、法律四方面论证了系统可行性,并详细分析了系统性能、功能模块和开发流程。系统分为管理员、用户和商家三个角色,分别具有不同的操作权限。通过ER图展示了数据库设计,并提供了系统界面截图说明功能实现。该系统为动物管理提供了数字化解决方案,提高了管理效率和准确性。

毕设源码_严学姐 1088

计算机毕业设计springboot基于协同过滤算法的体育商品推荐系统 基于Spring Boot框架的体育用品推荐系统设计与实现 Spring Boot驱动下的体育商品个性化推荐系统研究

本文介绍了一个基于SpringBoot框架和协同过滤算法的体育商品推荐系统。系统采用MySQL数据库,实现了用户管理、商品分类展示、购物车、订单处理、留言板、论坛交流等功能模块。通过分析用户历史行为和偏好,系统能够提供个性化商品推荐。文章详细阐述了系统功能需求、性能分析、技术可行性及数据库设计,并展示了用户和管理员的操作界面。该系统旨在提升用户体验和商家运营效率,为体育用品电商平台提供智能化解决方案。

毕设源码_严学姐 1237

node.js宠物店信息管理系统程序+论文 可用于毕业设计

本选题将以宠物店的实际运营为研究情景,重点分析和研究宠物店信息管理系统的构建问题,以期探寻适合宠物店发展的信息管理模式的问题原因,提出构建有效信息管理系统的对策建议,为后续更加深入的研究提供基础。[10] 张伟龙,吕明,胡宏,杜宝珠,张捷. MySQL 数据库服务器监控系统设计与实现[J]. 工业控制计算机,2019, 32(12): 18-20.[9] 张钊源,刘晓瑜,鞠玉霞. Node.js 后端技术初探[J]. 中小企业管理与科技(上旬刊),2020, (08): 193-194.

x陈杰学长毕设 834

计算机毕设Springboot“小圈子”校园互助平台 “校园帮帮”:Springboot驱动的校园互助平台开发 基于Springboot的“校园互助圈”系统设计与实现

小圈子”校园互助平台通过整合Springboot框架的强大功能,实现了用户信息管理、互助信息发布与分类、互动交流、消息通知以及数据统计分析等核心功能。这些功能不仅提高了信息传播的效率,还增强了校园内的互助氛围,为学生和教师提供了一个便捷、高效的交流平台。通过技术赋能,该平台有望成为校园生活中不可或缺的一部分,推动校园文化的建设与发展。注:完成的毕业设计程序以下面的的环境软件、功能图和界面为准。

世迁科技 2072

(开题)flask框架基于智能推荐的车辆交易管理系统(程序+论文+python)

随着汽车工业的快速发展和人们生活水平的提高,车辆交易已成为市场经济中不可或缺的一部分。然而,传统的车辆交易方式往往存在信息不对称、交易流程繁琐、监管难度大等问题,导致交易效率低下,消费者权益难以保障。因此,开发一个高效、透明、安全的车辆交易管理系统,对于优化车辆交易流程、提升交易效率、保障消费者权益具有重要意义。近年来,信息技术的飞速发展为车辆交易管理系统的开发提供了强有力的技术支持,使得车辆交易更加便捷、智能化。

睿渊计算机毕业设计 1030

SSM微信小程序的社区购物系统 微信小程序社区购物平台的SSM架构开发 基于SSM框架的微信小程序社区电商系统设计与实现

随着互联网技术的飞速发展,社区购物模式逐渐成为现代生活的重要组成部分。传统的社区购物方式往往依赖于线下实体店铺,不仅效率低下,还存在信息不对称的问题。近年来,微信小程序的兴起为社区购物带来了新的机遇。其便捷的操作、高效的交互以及强大的功能集成,使得社区购物系统能够更好地满足用户的需求。基于SSM(Spring + SpringMVC + MyBatis)框架的微信小程序社区购物系统,正是在这样的背景下应运而生,旨在为用户提供一个高效、便捷、安全的购物体验

java毕设程序源码王哥 1030

django宠物服务管理系统【java或python】—计算机毕业设计源码+LW文档

该系统提供了宠物种类管理、用户管理、医疗服务管理、美容服务管理以及商品分类管理等功能,旨在为宠物服务提供商和宠物主人提供一个高效、便捷的管理和服务平台。其中,用户表存储用户的基本信息;该系统提供了宠物种类管理、用户管理、医疗服务管理、美容服务管理以及商品分类管理等功能,满足了宠物服务提供商和宠物主人的多元化需求。(3)医疗服务管理:系统应提供对宠物医疗服务的增删改查功能,包括医疗服务的名称、价格、描述等信息。(4)美容服务管理:系统应提供对宠物美容服务的增删改查功能,包括美容服务的名称、价格、描述等信息。

qq_375279829的博客 296

基于ssm电脑配件商城系统(源码+lw+部署文档+讲解等)

本课题针对电脑配件销售场景中商品分类混乱、库存管理低效、订单处理繁琐、用户选购体验差、营销推广单一的痛点,设计并实现一套基于SSM的电脑配件商城系统,成果交付包含源码、毕业论文(lw)、部署文档及配套讲解等。系统后端以SSM(Spring+SpringMVC+MyBatis)框架为核心,整合Shiro权限控制、Redis缓存、MinIO文件存储、在线支付、消息推送等技术,搭建稳定高效的服务架构,实现电脑配件分类管理、商品信息维护、库存实时监控、订单全流程管控、用户信息管理、营销活动运营、交易数据统计分析等核

优快云毕设辅导道祖第一人、全网粉丝50W+,专注于大学生项目实战开发,讲解,毕业答疑辅导,高校老师/讲师/同行合作。以及产品测评宣传、工具推广等合作。同时招收学生代理、校园代理。 564
上一篇: 什么时候要用到Lambda写法(匿名内部类简洁写法,含有创建线程,遍历集合,遍历数组)
下一篇: idea注解能使用,但是注解不变色,注解依旧是灰色,也许不是网上说的省电模式的模式问题
自律彭于晏
博客等级 码龄5年 946粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值