前言
- 本文主要讲解入门项目的基本知识
- 本文乃是我学习笔记总结,不足之处,还望指点
- 本文中因多处使用注释,为方便书写,若以“//”双斜杠开头的都是注释
- 本文中为了清晰讲解基础知识,其中的代码并未完整
项目需求
需求
查询订单及订单明细的信息(大家自行脑补什么订单吧)
SQL语句
确定查询的主表:订单表
确定查询的关联表:订单明细表
(相信大家也清楚简单电商平台数据库的吧)
分析思路
分析
在orders.java类中添加List<orderDetail> orderDetails属性。
最终会将订单信息映射到orders中,订单所对应的订单明细映射到orders中的orderDetails属性
在orders中添加list订单明细
//订单明细
private List<OrderDetail> orderdetails;
mapper.xml
resultMap的定义
<!-- 订单及订单明细的resultMap -->
<!-- 使用继承,就可以不用再配置订单信息和用户信息的映射 -->
<resultMap type="Orders全路径" id="OrdersAndOrderDetailResultMap" extends="OrdersUserResultMap">
<!-- 订单信息 -->
<!-- 用户信息 -->
<!-- 订单明细信息 -->
<!-- 一个订单关联查询出多个明细,要使用collection进行映射 -->
<!-- collection:对关联查询到多条记录映射到集合对象中
property:将关联查询到多条记录映射到Orders中的哪个属性,也就是新添加的list
ofType:指定映射到list集合属性中的pojo的类型
-->
<collection property="orderdetails" ofType="OrderDetail全路径">
<!-- id:订单明细唯一标识 -->
<!-- property:要将订单明细的唯一标识映射到OrderDetail的哪个属性 -->
<id column="" property=""/>
<!-- 其他普通列 -->
<result column="" property="" />
</collection>
</resultMap>
关于继承的内容见MyBatis入门【九】一对一查询之resultMap
配置SQL
<!-- 查询订单关联查询用户信息 -->
<select id="findOrdersAndOrderDetailResultMap" parameterType="" resultMap="OrdersAndOrderDetailResultMap全路径">
<!-- parameterType="",用于传入查询条件参数,在此处先进行省略 -->
select
orders.* ,
user.username,
user.sex,
user.address,
orderdetail.id,
orderdetail.num
from
orders , user,orderdetail
where
orders.id = user.id and orderdetail.id=order.id
</select>
mapper.java
public List<Orders> findOrdersAndOrderDetailResultMap(0 throws Exception;
测试
测试和一对多测试原理相同,这里投个懒,留给大家去解决了