文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

resultMap中的collection标签怎么用

2023-06-29 02:04

关注

这篇文章主要介绍“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<Sport> 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<Employee> findSportsInfoByEmpId(@Param("eid")Integer id);

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

<select id="findSportsInfoByEmpId" resultMap="empmap">        select e.*,s.*        from employee as e,sport as s        where e.eid=s.eid        and e.eid=#{eid}    </select>        <resultMap type="Employee" id="empmap">        <id property="eid" column="eid"/>        <result property="ename" column="ename"/>        <result property="epwd" column="epwd"/>        <result property="address" column="address"/>        <result property="tel" column="tel"/>        <!-- collection描述一对多的关系,ofType是集合所包含的类型,可以写完整Java类名或别名  -->        <collection property="sports" ofType="Sport">            <id property="sportId" column="sportid"/>            <result property="sportName" column="sportname"/>            <result property="sportScore" column="sportscore"/>        </collection>    </resultMap>

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

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

运行结果: 

resultMap中的collection标签怎么用

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

<select id="findSportsInfoByEmpId" resultMap="empmap">select e.*,s.*from employee as e,sport as swhere e.eid=s.eidand e.eid=#{eid}</select><resultMap type="Employee" id="empmap"><id property="eid" column="eid"/><result property="ename" column="ename"/><result property="epwd" column="epwd"/><result property="address" column="address"/><result property="tel" column="tel"/><collection property="sports" ofType="Sport" resultMap="sportmap"></collection></resultMap><resultMap type="Sport" id="sportmap"><id property="sportId" column="sportid"/><result property="sportName" column="sportname"/><result property="sportScore" column="sportscore"/></resultMap>

collection标签中各属性的说明

<result column="name" property="name"/><!--collection定义一个子集合对象返回ofType:指定集合里面元素的类型property属性设置集合的属性名--><collection property="passengers" ofType="Passenger"><!--id指的是主键,column是数据库中的列,可以是别名property映射的是实体类中的属性result是普通列(非主键)--><id column="pid" property="id"/><result column="pname" property="name"/></collection></resultMap>

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯