文档章节

网站前台的三级联动数据封装

小天丶羽
 小天丶羽
发布于 11/13 12:00
字数 703
阅读 9
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

我在进行项目时候遇到了一个进行数据封装的一个功能,进行数据的封装的功能也挺复杂,来回试了好几十种方法.最后使用的是这种方法.

使用一个pojo进行封装两个数据,一个是list一个是实体类.

具体代码为

 

@RequestMapping("/findByParentId")
    public List<ItemCatList2VO> findByParentId(Long parentId) {

        ArrayList<ItemCatList2VO> list1 = new ArrayList<>();

//       获取到的第一层结果集
        List<ItemCat> itemCatList1 = itemCatService.findByParent(parentId);
        //将这份数据进行封装
        for (ItemCat itemCat1 : itemCatList1) {
            //创建pojo对象
            ItemCatList2VO<ItemCatList2VO> list2VO1 = new ItemCatList2VO<>();

            ArrayList<ItemCatList2VO> list2 = new ArrayList<>();
            //获取第二层的数据
            Long id1 = itemCat1.getId();
            List<ItemCat> itemCatList2 = itemCatService.findByParent(id1);
            for (ItemCat itemCat2 : itemCatList2) {
                //创建pojo对象
                ItemCatList2VO<ItemCat> list2VO2 = new ItemCatList2VO<>();
                Long id2 = itemCat2.getId();
                List<ItemCat> itemCatList3 = itemCatService.findByParent(id2);
                list2VO2.setItemCat(itemCat2);
                list2VO2.setList(itemCatList3);
                list2.add(list2VO2);
            }

            //封装进pojo
            list2VO1.setItemCat(itemCat1);
            list2VO1.setList(list2);
            list1.add(list2VO1);
        }
        return list1;
    }

然后我使用的是有limit条件的查询,所以自己手动拼了一个sql.这里没有向上贴代码

实现思路:

  首先创建pojo类

public class ItemCatList2VO <T>implements Serializable {
//实体类
    private ItemCat itemCat;
//list集合.用来存储通过父id进行查询的结果.
    private List<T> list;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        ItemCatList2VO<?> that = (ItemCatList2VO<?>) o;
        return Objects.equals(itemCat, that.itemCat) &&
                Objects.equals(list, that.list);
    }

    @Override
    public int hashCode() {

        return Objects.hash(itemCat, list);
    }

    public ItemCat getItemCat() {

        return itemCat;
    }

    public void setItemCat(ItemCat itemCat) {
        this.itemCat = itemCat;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }
}

这是一个分为需要封装三层,我做的时候思路没有那么开阔,所以我是先封装了然后再在这个基础上进行的第三层的封装. 

  第一层就是:在for循环的过程中,将第一层数据中的itemCat和第二层中的结果集封装在pojo中,然后再封装到list集合中.

  第二层就是在第二个for循环中,将第二层数据中的itemCat和第三层中的结果集封装在pojo中,然后再封装到list集合中.

 

然后在页面上使用

做出来以后是这样的一个结构.可以使用循环遍历的方式,将这个数据取出来.

当在第二级和第三级的div在同级的情况下的时候,可以使用:

将数据取出来.我觉得在封装数据的饿时候挺难的.

总结:使用list和pojo将对象进行封装,封装完成后,扔到页面进行解析.

本文转载自:https://www.cnblogs.com/qingmuchuanqi48/p/10852674.html

小天丶羽
粉丝 0
博文 18
码字总数 6737
作品 0
广安
后端工程师
私信 提问
基于 mpvue 框架的小程序选择组件,支持单列,多列,级联

mpvue-picker 前言 在 mpvue开源之初写了 用 vue 写小程序,基于 mpvue 框架重写 weui。当时用的是小程序的原生组件,没有对其进行封装和组件化。而对于现在的前端开发环境,,,以及已经是一...

KuangPF
2018/05/14
0
0
2012年度最新的10个原创Jquery插件

漫画原创名片提示框Jquery插件最初版 此Jquery插件是一款非常实用的功能,像微博和一些大平台的会员信息都是以名片示的弹出层显示,今天把它封装成一个插件分享给大家用,这是最初版本功能已...

邓剑彬
2012/11/29
42
0
2012年度最新的10个原创Jquery插件

漫画原创名片提示框Jquery插件最初版 此Jquery插件是一款非常实用的功能,像微博和一些大平台的会员信息都是以名片示的弹出层显示,今天把它封装成一个插件分享给大家用,这是最初版本功能已...

邓剑彬
2012/11/29
618
6
CityPicker城市选择器v4.0.0版本发布

CityPicker 城市选择器v4.0.0 使用方法 请查看GitHub详细wiki -> citypicker 说明 在实际的项目中一般情况下都需要使用到省市区三级联动地址选择的功能,有的公司是提供接口获取,有的公司则...

ostracod
01/23
0
0
第117天:Ajax实现省市区三级联动

Ajax实现省市区三级联动 思路: (1)首先获取省份信息 (2)发起Ajax请求,注意dataType中的T大写 (3)封装回调函数,回调函数success中用$.each循环每一条数据,动态创建option,并将数据...

半指温柔乐
2017/12/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端入门到实战:图解原生dialog标签(非常详细)

在html5中,新增了很多语义化的标签。如footer、header之类的,今天的主角是dialog标签 顾名思义,就是用来定义对话框的。目前只有Chrome和Safari支持该标签,所以用的不多,不过确实挺好用的...

梦想编程
26分钟前
3
0
一些php常用函数积累

本文链接<?php// id: ecffe70d3af54df9bad97b61918ace7d global $ct_path, $ct_log_path;$log_path = "test_php.txt";// 是否先log到buffer,再通过CT_flush()一次性写入文件$......

一字见心
26分钟前
3
0
IntelliJ idea中 注释代码折叠

visual studio中有#region 可以折叠代码,IntelliJ idea 中也有类似功能 //region 描述代码//endregion

format
27分钟前
4
0
oracle表中更改主键

一、数据表有主键但无主键约束名 先删除之前的主键,后添加主键 ,执行SQL: a. alter table 表名 drop primary key; b. alter table 表名 add primary key(想要更改的字段名称); 二、数据表...

_Somuns
28分钟前
3
0
jQuery AJAX提交表单

我有一个名称为orderproductForm的表单,输入的数量不确定。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送所有形式为orderproductForm的输入。 我想一种方法是做类...

技术盛宴
34分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部