1. 链表查询
1.1 多对一
(1) 根据订单id查询订单信息以及该订单对应的用户信息。
第一种方式 通过链表查询。
<resultMap id="My01" type="com.aaa.entity.Order" >
<!--id必写-->
<id property="id" column="order_id"/>
<result property="no" column="order_no"/>
<result property="price" column="order_price"/>
<result property="num" column="num"/>
<!--association:表示多对一
property:表示对象属性名
javaType:表示该对象所属的类型
autoMapping必须写
-->
<association property="user" javaType="com.aaa.entity.User" autoMapping="true">
<!--User和User表的对应关系-->
<id property="id" column="id"/>
</association>
</resultMap>
<!--注意:使用了resultMap不能在使用resultType-->
<select id="selectById" resultMap="My01" >
select * from orders o join users u on o.uid=u.id where o.order_id=#{id}
</select>
第二种方式 通过嵌套查询。----两次查询。
1.2 一对多
1.从一的一方查询多的一方。
比如: 班级--1---n-->学生.
CREATE TABLE class(
c_id INT PRIMARY KEY AUTO_INCREMENT,
c_name VARCHAR(20),
);
INSERT INTO class(c_name) VALUES('QY145');
INSERT INTO class(c_name) VALUES('QY143');
INSERT INTO class(c_name) VALUES('QY142');
CREATE TABLE student(
s_id INT PRIMARY KEY AUTO_INCREMENT,
s_name VARCHAR(20),
class_id INT
);
INSERT INTO student(s_name, class_id) VALUES('xs_A', 1);
INSERT INTO student(s_name, class_id) VALUES('xs_B', 1);
INSERT INTO student(s_name, class_id) VALUES('xs_C', 2);
INSERT INTO student(s_name, class_id) VALUES('xs_D', 2);
INSERT INTO student(s_name, class_id) VALUES('xs_E', 3);
INSERT INTO student(s_name, class_id) VALUES('xs_F