mybatis中collection用法
时间: 2024-10-15 09:04:48 浏览: 31
在MyBatis中,Collection是指用于存储一组关联对象的数据结构,如List、Set或Map等。它经常用于处理一对多(OneToMany)或多对多(ManyToMany)的关系映射。当你需要从数据库查询出关联表中的一组数据,并希望在结果集中作为一个整体返回时,可以利用Collection。
以下是MyBatis中Collection的一些常见用法:
1. **嵌套查询**:在SQL语句中,使用`<foreach>`标签遍历集合并动态生成内联的子查询。
```xml
<select id="selectUsers" resultType="map">
SELECT u.id, c.name as cityNames
FROM users u
LEFT JOIN cities c ON u.cityId = c.id
</select>
<resultMap type="User" id="userResultMap">
<id property="id" column="id"/>
<collection property="cities" ofType="City">
<id property="cityId" column="city_id"/>
<property property="name" column="name"/>
</collection>
</resultMap>
```
2. **动态属性绑定**:在`<resultMap>`中,通过`collection`元素直接绑定到Java对象的字段上,MyBatis会自动将查询结果转换为指定类型的集合。
3. **分页查询**:如果Collection是从另一个查询结果集分页获取的,可以使用`<association>`或`<collection>`配合`<limit>`和`offset`来实现。
4. **延迟加载**:MyBatis允许设置懒加载策略,即只有在访问实际值时才会去数据库查询,避免一次性加载所有关联数据导致性能下降。
阅读全文