千家信息网

resultMap中的collection标签怎么用

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍"resultMap中的collection标签怎么用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"resultMap中的collection
千家信息网最后更新 2025年01月23日resultMap中的collection标签怎么用

这篇文章主要介绍"resultMap中的collection标签怎么用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"resultMap中的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@AllArgsConstructorpublic 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@AllArgsConstructorpublic class Sport {    private int sportId;    private String sportName;    private String sportScore;}

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

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

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

                                                                                                                    

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

    @org.junit.Test    public void test() {        SqlSession session = MyBatisUtils.getSqlSession();        EmpDao ed = session.getMapper(EmpDao.class);        List list = ed.findSportsInfoByEmpId(1);        for (Employee emp : list) {            for (Sport e : emp.getSports()) {                System.out.println(e);            }        }    }

    运行结果:

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

                                                                                                                                                                                                    

    collection标签中各属性的说明

    关于"resultMap中的collection标签怎么用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

    0