2021-06-11 mybatis collection column属性用法

在这里插入图片描述在这里插入图片描述这里主语句和子查询里面条件和参数名都是id,所以column=“id”,还可以变换如下

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

### MyBatis 中 `collection` 标签的属性及参数传递方法 #### 一、`collection` 标签概述 `collection` 元素用于处理一对多的关系,在 Java Bean 的某个复杂类型属性上进行映射,该属性通常是一个集合列表。这使得可以表示一个实体对象内嵌套多个子对象的情况。 #### 二、`collection` 标签的主要属性说明 | 属性名 | 描述 | | --- | --- | | **property** | 对应于 Java 类中的一对多关联属性名称,通常是 List/Set/Map 等类型的字段[^1]。| | **ofType/itemType/javaType** | 子元素的数据类型,指定集合里存储的对象的具体类型。| | **column** | 数据库列名或别名,当 SQL 查询返回的结果集中存在此列时会触发对该属性的赋值操作。| | **select** | 嵌套查询语句 ID,通过执行另一个 Select 映射来获取子项数据并填充到当前对象的相关联集合属性中。| #### 三、参数传递方式 在实际开发过程中,向 `collection` 关联查询传递参数的方式有两种: ##### 方式一:直接利用父级查询条件作为子查询输入 如果父子表之间有关联字段,则可以直接基于这些字段构建联合查询逻辑而无需额外提供其他参数;此时只需确保主查询已包含了必要的过滤条件即可满足需求。 ##### 方式二:显式设置参数变量 对于某些特殊场景下可能需要单独为子查询设定特定筛选规则的情形,可通过如下所示的方法实现: - 使用 `<foreach>` 动态SQL标签配合自定义命名空间下的接口函数完成批量加载; - 或者借助 OGNL 表达式的灵活性来进行更复杂的表达式计算与转换工作。 ```xml <!-- 示例代码 --> <resultMap id="orderResultMap" type="Order"> <!-- ...省略部分配置... --> <collection property="items" ofType="Item" column="{orderId=id}" select="findItemsByOrderId"/> </resultMap> <select id="findItemsByOrderId" parameterType="map" resultType="Item"> SELECT * FROM item t WHERE t.order_id = #{orderId} </select> ``` 上述例子展示了如何在一个订单 Order 实体类中加入商品 Item 列表,并且指定了两者间的外键约束关系——即 order_item 表内的 order_id 字段对应着 orders 表中的主键 id 。 同时还设置了 `column` 参数用来告知框架应该采用哪个字段去匹配目标记录集。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值