【MyBatis】学习笔记14:通过collection解决一对多的映射关系
MyBatis14:通过collection解决一对多的映射关系
已知,一个部门对应多个员工
现要求,根据部门Id,获取部门信息和部门员工信息
下面的例子并非是部门和员工,但差不多的
下方例子存在提供商(SmbmsProvider)和订单(SmbmsBill)
要求通过提供商id获取提供商信息和订单信息(订单中可能有多个商品)
对象


接口

public SmbmsProvider getOrderByProviderId(@Param("pid") String pid);
映射文件

<!-- public SmbmsProvider getOrderByProviderId(@Param("pid") String pid);-->
<resultMap id="getOrderByPid" type="SmbmsProvider">
<id property="id" column="id"/>
<result property="proName" column="proName"/>
<collection property="smbmsBills" ofType="SmbmsBill">
<id property="billCode" column="billCode"/>
<result property="productName" column="productName"/>
<result property="billCode" column="billCode"/>
<result property="totalPrice" column="totalPrice"/>
<result property="isPayment" column="isPayment"/>
</collection>
</resultMap>
<select id="getOrderByProviderId" resultMap="getOrderByPid">
select * from smbms_provider left join smbms_bill on smbms_provider.id=smbms_bill.providerId where smbms_provider.id=#{pid}
</select>
测试
@Test
public void getBillsByProviderId(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
providerMapper mapper = sqlSession.getMapper(providerMapper.class);
SmbmsProvider result = mapper.getOrderByProviderId("2");
System.out.println(result);
System.out.print("公司名字:"+result.getProName()+"\n");
for(SmbmsBill bill:result.getSmbmsBills()){
System.out.print(" | 订单号:"+bill.getBillCode());
System.out.print(" | 商品名称:"+ bill.getProductName());
System.out.print(" | 商品价格:"+bill.getTotalPrice());
String st=(bill.getIsPayment()==2)?"已付款":"未付款";
System.out.println(" | 付款状态:"+ st);
}
}

总结
collection:处理一对多映射关系
--| oftype:表示该属性所对应集合中存储的数据的类型

注意事项
上述两个Id不能相同,否则会出现,查询到多条数据,但只返回一条的情况。
【MyBatis】学习笔记03:配置文件进一步解读(非常重要)
【MyBatis】学习笔记06:各种查询所返回数据的数据类型
【MyBatis】学习笔记12:通过级联属性赋值解决多对一的映射关系
【MyBatis】学习笔记14:通过collection解决一对多的映射关系的更多相关文章
- mybatis学习笔记(14)-查询缓存之中的一个级缓存
mybatis学习笔记(14)-查询缓存之中的一个级缓存 标签: mybatis mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 ...
- Mybatis学习笔记14 - 动态sql之foreach标签
一.查询给定集合中员工id对应的所有员工信息 示例代码: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; import ...
- Mybatis学习笔记二
本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...
- 【MyBatis学习笔记】
[MyBatis学习笔记]系列之预备篇一:ant的下载与安装 [MyBatis学习笔记]系列之预备篇二:ant入门示例 [MyBatis学习笔记]系列之一:MyBatis入门示例 [MyBatis学习 ...
- MyBatis:学习笔记(3)——关联查询
MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统, ...
- Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)
一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...
- mybatis学习笔记--常见的错误
原文来自:<mybatis学习笔记--常见的错误> 昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新. 1.没有在configurat ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- SQL反模式学习笔记14 关于Null值的使用
目标:辨别并使用Null值 反模式:将Null值作为普通的值,反之亦然 1.在表达式中使用Null: Null值与空字符串是不一样的,Null值参与任何的加.减.乘.除等其他运算,结果都是Null: ...
- mybatis学习笔记(五):mybatis 逆向工程
mybatis学习笔记(五):mybatis 逆向工程 在日常开发中,如果数据库中存在多张表,自己手动创建 多个pojo 类和编写 SQL 语法配置文件,未免太过繁琐,mybatis 也提供了一键式生 ...
随机推荐
- VMWARE 客户机 ARP 问题一则
最近测试自定义的 linux 镜像,会在 vmware 里面反复安装.测试过程中,发现一个奇怪的现象,就是刚装好的虚拟机,要主动往外ping一下,才能被网络上其他主机连接上.否则就算是同一子网下的宿主 ...
- mmap映射类型
文件映射和匿名映射都是操作系统中对于内存映射的两种类型,主要应用于进程间的通信或者大量数据的处理. 文件映射,也就是内存映射文件,是把一个文件或者文件的一部分映射到进程的地址空间,它允许对文件进行随机 ...
- 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年4月刊
本文为大家整理了墨天轮数据社区2023年4月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的基础安装配置.故障处理.性能优化等日常实践操作,以及概念梳理.常用脚本. ...
- DIKI:清华提出基于残差的可控持续学习方案,完美保持预训练知识 | ECCV'24
本研究解决了领域-类别增量学习问题,这是一个现实但富有挑战性的持续学习场景,其中领域分布和目标类别在不同任务中变化.为应对这些多样化的任务,引入了预训练的视觉-语言模型(VLMs),因为它们具有很强的 ...
- FluxCD 多集群应用的设计与实现
前言 FluxCD 是 CNCF 的孵化项目,可以让我们以 GitOps 的方式轻松地交付应用.和另一个同类的 CNCF 孵化项目 ArgoCD 不同,FluxCD 是许多 toolkit 的集合,天 ...
- SpringBoot 2.3 升级到 SpringBoot 2.7 爬坑-- SpringDoc & Swagger
目录 POM yml 配置自定义的 OpenAPI 规范 拦截器去除 swagger 的接口验证 模型 Controller 配置 常用注解 注意:Swagger支持SpringBoot2.0但不支持 ...
- Java EasyExcel 导出报内存溢出如何解决
大家好,我是 V 哥.使用EasyExcel进行大数据量导出时容易导致内存溢出,特别是在导出百万级别的数据时.你有遇到过这种情况吗,以下是V 哥整理的解决该问题的一些常见方法,分享给大家,欢迎一起讨论 ...
- Ros环境创建相关!超级简单!!超级详细!!
1.创建工作空间workspace 其中catkin_ws后面的ws是work_space的简写,指代工作空间 <catkin_ws是你的工作空间的名字,随便取> mkdir -p ~/c ...
- 看图认识HTML5
教程: https://www.w3.org/TR/html52 https://www.w3cschool.cn/html5/ https://www.runoob.com/html/html5-i ...
- 基于Java+SpringBoot心理测评心理测试系统功能实现一
一.前言介绍: 1.1 项目摘要 心理测评和心理测试系统在当代社会中扮演着越来越重要的角色.随着心理健康问题日益受到重视,心理测评和心理测试系统作为评估个体心理状态.诊断心理问题.制定心理治疗方案的工 ...
