1.1 需求
查询订单信息,关联查询创建订单的用户信息
确定查询的主表:订单表
确定查询的关联表:用户表
关联查询使用内链接?还是外链接?
由于orders表中有一个外键(user_id),通过外键关联查询用户表只能查询出一条记录,可以使用内链接。关联查询,orders.* ,USER.username , USER.sex , USER.address 为关联查询的列,Orders , USER 为关联的表,orders.user_id= user.id 为关联查询的条件(注意条件中的 , 号)
SELECT
orders.* ,
USER.username ,
USER.sex ,
USER.address
FROM
Orders ,
USER
WHERE orders.user_id = user.id
将上边sql查询的结果映射到pojo中,pojo中必须包括所有查询列名。
原始的Orders.java不能映射全部字段,需要新创建的pojo。
创建 一个pojo继承包括查询字段较多的po类。
//通过此类映射订单和用户传查询的结果,让此类继承包括字段较多的POJO类
public classOrdersCustom extends Orders{
//添加用户属性
/*USER.username,
USER.sex,
USER.address */
private String username;
private String sex;
private String address;
<select id="findOrdersUser" resultType="OrdersCustom">
SELECTorders.* ,
user.username,user.sex, user.address FROM orders ,USER
WHERE
orders.user_id=user.id
select>
//查询订单关联查询用户信息
publicList
使用resultMap将查询结果中的订单信息映射到Orders对象中,在orders类中添加User属性,将关联查询出来的用户信息映射到orders对象中的user属性中。
public classOrders {
privateInteger id;
privateInteger userId;
privateString number;
privateDate createtime;
privateString note;
//用户信息
private User user;
<resultMap type="cn.itcast.mybatis.po.Orders"id="OrdersUserResultMap">
<id column="id"property="id"/>
<result column="user_id"property="userId"/>
<result column="number"property="number"/>
<result column="createtime"property="createtime"/>
<result column="note"property=note/>
<id column="user_id"property="id"/>
<result column="username"property="username"/>
<result column="sex"property="sex"/>
<result column="address"property="address"/>
resultMap>
<select id="findOrdersUserResultMap" resultMap="OrdersUserResuletMap">
SELECTorders.* ,
user.username,user.sex, user.address FROM orders ,USER
WHERE
orders.user_id=user.id
select>
//查询订单关联查询用户使用resultMap
public List
测试略
摘自传智博客燕青老师的视频