resultMap标签中里的collection标签详解

网友投稿 882 2022-11-02

resultMap标签中里的collection标签详解

resultMap标签中里的collection标签详解

目录resultMap标签中的collection标签collection(一对多)collection标签中各属性的说明

resultMap标签中的collection标签

collection(一对多)

元素的作用和association元素的作用差不多一样,事实上,它们非常类似,也是映射到javaBean的某个“复杂类型” 属性,只不过这个属性是一个集合列表,即JavaBean内部嵌套一个复杂数据类型(集合)。和使用association元素一样,我们使用嵌套查询, 或者从连接中嵌套结果集。

下面通过一个示例来演示coeltien 的具体应用,示例需求获取指定用户的相关的信息和地址列表。

我们有实体类Employee如下:

package com.xyj.entity;

import java.util.List;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

@Data

@NoArgsConstructor

@AllArgsConstructor

public class Employee {

private int eid;

private String ename;

private String epwd;

private String address;

private String tel;

private List sports;//职员所参加的所有运动项目

}

员工间举行了一个小型运动会,又有Sport实体类如下:

package com.xyj.entity;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

@Data

@NoArgsConstructor

@AllArgsConstructor

public class Sport {

private int sportId;

private String sportName;

private String sportScore;

}

可知一个员工可以参加多个运动项目,所以我们的Employee对象内部嵌套了一个复杂数据类型的属性,sports,接下来在EmpDao接口中添加根据职员id获取职员参加的项目列表的方法,代码如下:

List findSportsInfoByEmpId(@Param("eid")Integer id);

修改对应的映射文件,由于Employee内部嵌套了集合对象,因此需要使用collection来实现结果映射,实例代码如下:

select e.*,s.*

from employee as e,sport as s

where e.eid=s.eid

and e.eid=#{eid}

最后进行测试,查看结果是否正确:

@org.junit.Test

public void test() {

SqlSession session = MyBatisUtils.getSqlSession();

EmpDao ed = session.getMapper(EmpDao.http://class);

List list = ed.findSportsInfoByEmpId(1);

for (Employee emp : list) {

for (Sport e : emp.getSports()) {

System.out.println(e);

}

}

}

运行结果:

查询成功,但是我们的collection标签写在resultMap标签的内部,不能达到复用,当然是可以复用的,只需修改代码如下:

select e.*,s.*

from employee as e,sport as s

where e.eid=s.eid

and e.eid=#{eid}

collection标签中各属性的说明

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:2020 CCPC-Wannafly Winter Camp Day5 Div.1&2——A Alternative Accounts【状压】
下一篇:UVA 624——CD【01背包 + 打印路径】
相关文章

 发表评论

暂时没有评论,来抢沙发吧~