java.util.List嵌套集合

本文探讨了在Java中使用嵌套List集合来处理复杂数据结构的场景,例如模拟手机商城的分类展示。通过创建不同层级的数据模型,如手机、赠品和颜色配置,展示了如何用集合来表示手机与其赠品之间的复杂关系,并提供了相关数据表的设计思路和关系描述。
摘要由CSDN通过智能技术生成

今天模仿手机商城的时候, 大胆想出了使用集合'嵌套'

private List<List<Xxx>> xxx;                        // 两个不确定 (第一层属性不确定, 第二层属性不确定)

场景: 

首页展示出不同的大类, 像iphone 6s, 华为8x, vivo10等这种大分类

点击一个大分类, 进去展示出不同颜色, 套餐, 配置等的小分类

注: 只要有一点不同, 就是一种小分类, 比如颜色有3种, 套餐有2种, 配置有3种, 则小分类就有3*2*3种(一种小分类有一个编号)

一种小分类可能有不同的赠品或套餐携带物品(以下统称小物件)

比如编号为201805121201的手机赠送某耳机

编写为201805121202的手机赠送某手机保护壳和某运动手环

意思是每种手机可能有不同的小物件(如果某种手机销量差, 可以考虑增加赠品来促销)

这中间的关系链其实是比较复杂的, 想表示清楚并不容易

思路:

根据面向对象的想法, 将手机设计成类型

小物件也设计成类型

小物件是与手机关联的, 所以将小物件设计为手机的属性

因为一部手机关联的小物件的各类是不确定的, 所以将小物件设计为手机的集合属性

对于某种小物件, 它可能有不同的颜色, 所以还要使用集合表示(这个最难理解)

如下示意图就明白了

荣耀v10              -- 某种品牌手机(一个手机对象)

运动手环/硅胶保护壳/...          -- 赠品大类(不确定有多少种赠品, 根据查询得出)

黑.红...运动手环  /  黑.白.青...硅胶保护壳   / ...           -- 细化赠品(不确定每种赠品有多少个小类, 根据查询得出)

 

所以做如下属性设计是比较合理的:

&#
### 回答1: 这个错误是在使用 MyBatis 框架时出现的。 错误信息中提到的 "BindingException" 是绑定异常,表示在绑定 Mapper 接口和映射器 XML 文件时出现了问题。 具体来说,错误信息中提到的 "cn.pt.dao.UserMapper.checkUserName" 表示绑定的 Mapper 接口方法,错误信息中的 "interface java.util.List" 则表示这个方法的返回类型是一个 List 接口。 这个错误的原因是,MyBatis 不支持这样的返回类型。MyBatis 的 Mapper 接口方法的返回类型必须是以下之一: - 单个 Java 基本类型 - 单个 Java 对象 - 集合或数组,其中的元素类型必须是以上两种之一 因此,解决方法是修改 Mapper 接口方法的返回类型,使其符合以上规则。 例如,如果你希望 checkUserName 方法返回一个包含多个 User 对象的 List,那么你可以将返回类型改为 "List<User>"。 ### 回答2: 出现"请求处理失败;嵌套异常是 org.apache.ibatis.binding.BindingException:映射器方法 'cn.pt.dao.UserMapper.checkUserName' 具有不受支持的返回类型:interface java.util.List"的问题是由于MyBatis框架对于某个Mapper的方法返回类型不受支持所致。 解决这个问题的方法有以下几种: 1. 检查Mapper方法的返回类型是否与所期望的类型一致。在这个问题中,'cn.pt.dao.UserMapper.checkUserName'方法的返回类型是'java.util.List',可能需要将其修改为其他合适的返回类型,例如'boolean'或者'Integer'来表示是否存在用户名。 2. 检查Mapper.xml文件中对应的SQL语句是否正确。确认SQL语句的返回结果与Mapper方法的返回类型一致。 3. 检查Mapper接口方法的参数是否正确。确认传递给Mapper方法的参数是否与Mapper.xml文件中定义的参数一致。 4. 检查MyBatis的版本是否符合要求。有时候老版本的MyBatis可能不支持某些返回类型,需要升级MyBatis到最新版本。 总结来说,解决这个问题的关键是检查Mapper方法的返回类型是否与所期望的类型一致,并确保Mapper接口、Mapper.xml文件和参数的一致性。如若仍然无法解决问题,可以参考MyBatis官方文档或者寻求相关技术人员的帮助。 ### 回答3: 出现该错误的原因是在映射器接口中的方法'checkUserName'返回类型为'java.util.List',这是一个不受支持的类型。解决这个问题的方法有两种: 1. 修改映射器接口方法的返回类型:将返回类型修改为正确的类型。根据具体需求,如果你期望的返回结果只有一个对象,可以修改返回类型为实体类对象;如果期望返回多个结果,可以修改返回类型为数组或者集合类。 2. 修改查询语句的处理方式:如果你不希望修改映射器接口方法的返回类型,可以通过修改查询语句的处理方式来解决。在映射文件中,可以使用resultMap来定义查询结果的映射规则。通过resultMap,可以将查询结果映射为所需的类型,包括实体类对象、数组或者集合类等。 综上所述,要解决这个问题,需要将映射器接口方法的返回类型修改为正确的类型,或者通过resultMap来定义查询结果的映射规则。根据具体情况选择适合的解决方法,即可解决"请求处理失败;嵌套异常是 org.apache.ibatis.binding.BindingException:映射器方法 'cn.pt.dao.UserMapper.checkUserName' 具有不受支持的返回类型:interface java.util.List"的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值