zoukankan      html  css  js  c++  java
  • Mybatis框架基础入门(七)--关联查询

    1.一对一查询

    1.1 使用resultType接收查询结果

    修改pojo类

    public class OrderUser extends order {
       private String username;
       private String address;
       ...此处省略get set方法
    }
    <!-- 查询订单,同时包含用户数据 -->
    <select id="queryOrderUser" resultType="orderUser">
    	SELECT
    	o.id,
    	o.user_id
    	userId,
    	o.number,
    	o.createtime,
    	o.note,
    	u.username,
    	u.address
    	FROM
    	`order` o
    	LEFT JOIN `user` u ON o.user_id = u.id
    </select>
    

    1.2 使用resultMap接收查询结果

    修改pojo类

    public class Order{
       private int id;
       private Integer userId;
       private String number;
       private User user;
       ..此处省略get set方法
    }
    <resultMap type="order" id="orderUserResultMap">
    	<id property="id" column="id" />
    	<result property="userId" column="user_id" />
    	<result property="number" column="number" />
    
    	<!-- association :配置一对一属性 -->
    	<!-- property:order里面的User属性名 -->
    	<!-- javaType:属性类型 -->
    	<association property="user" javaType="user">
    		<!-- id:声明主键,表示user_id是关联查询对象的唯一标识-->
    		<id property="id" column="user_id" />
    		<result property="username" column="username" />
    		<result property="address" column="address" />
    	</association>
    
    </resultMap>
    
    <!-- 一对一关联,查询订单,订单内部包含用户属性 -->
    <select id="queryOrderUserResultMap" resultMap="orderUserResultMap">
    	SELECT
    	o.id,
    	o.user_id,
    	o.number,
    	u.username,
    	u.address
    	FROM
    	`order` o
    	LEFT JOIN `user` u ON o.user_id = u.id
    </select>
    

    2. 一对多查询

    案例:查询所有用户信息及用户关联的订单信息。

    用户信息和订单信息为一对多关系。

    修改pojo类

    public class User{
       private String username;
       private String address;
       private List<Order> orders;
       ..此处省略get set方法
    }
    <resultMap type="user" id="userOrderResultMap">
    	<id property="id" column="id" />
    	<result property="username" column="username" />
    	<result property="address" column="address" />
    
    	<!-- 配置一对多的关系 -->
    	<collection property="orders" javaType="list" ofType="order">
    		<!-- 配置主键,是关联Order的唯一标识 -->
    		<id property="id" column="oid" />
    		<result property="number" column="number" />
    	</collection>
    </resultMap>
    
    <!-- 一对多关联,查询订单同时查询该用户下的订单 -->
    <select id="queryUserOrder" resultMap="userOrderResultMap">
    	SELECT
    	u.id,
    	u.username,
    	u.address,
    	o.id oid,
    	o.number,
    	FROM
    	`user` u
    	LEFT JOIN `order` o ON u.id = o.user_id
    </select>
    
  • 相关阅读:
    简单下拉列表的实现
    App Store 加急审核解析
    iOS 封装一个带复制功能的UILabel
    Xcode 控制台打印Unicode字符串转换为中文
    修改系统UITableViewCell的ImageView大小
    iOS SDWebImage实现原理详解
    Mac电脑用终端生成SSH key 访问自己的Github
    MVC与MVVM之间在IOS中的区别
    iOS TabBarItem设置红点(未读消息)
    virtualenv 创建python虚拟环境
  • 原文地址:https://www.cnblogs.com/Aaron-007/p/12814603.html
Copyright © 2011-2022 走看看