关联查询之一对一查询

A.环境搭建
在这里插入图片描述

CREATE TABLE orders(orderId BIGINT PRIMARY KEY AUTO_INCREMENT,customerNo BIGINT
,state VARCHAR(40));
CREATE TABLE customer(customerId BIGINT PRIMARY KEY AUTO_INCREMENT,name
VARCHAR(60),address VARCHAR(60));
ALTER TABLE orders ADD FOREIGN KEY(customerNo) REFERENCES customer(customerId);
INSERT INTO customer(name,address) VALUES('张三','武汉市1');
INSERT INTO customer(name,address) VALUES('李四','武汉市2');
INSERT INTO customer(name,address) VALUES('王五','武汉市3');
INSERT INTO orders(customerNo,state ) VALUES(1,'完成');
INSERT INTO orders(customerNo,state ) VALUES(1,'未完成');
INSERT INTO orders(customerNo,state ) VALUES(2,'完成');
INSERT INTO orders(customerNo,state ) VALUES(2,'完成');
INSERT INTO orders(customerNo,state ) VALUES(2,'未完成');

B.分析
因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用户信息为一
对一查询。如果从用户信息出发查询用户下的订单信息则为一对多查询,因为一个用户可以
下多个订单。

C.一对一查询
需求:查询所有订单信息,关联查询下单用户信息。
方法一
使用resultType,定义订单pojo类,此pojo类中包括了订单信息和用户信息
小结
定义专门的po类作为输出类型,其中定义了sql查询结果集所有的字段。此方法较
为简单,企业中使用普遍。
方法二
使用resultMap,在resultMap中使用association。
注意:当前场景下,每一个类属性都要处理,才能有对应的值返回.

<resultMap id="ordersResultMap" type="com.qzw.bean.Orders">
<id property="orderId" column="orderId"></id>
<result property="state" column="state"></result>
<association property="customer" javaType="com.qzw.bean.Customer">
<id property="customerId" column="customerId"></id>
<result property="name" column="name"></result>
<result property="address" column="address"></result>
</association>
</resultMap>
<select id="selectOrdersList" resultMap="ordersResultMap">
select * from orders,customer where orders.customerNo = customer.customerId
;
</select>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值