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>
    
  • 相关阅读:
    [翻译].NET Shell Extensions
    设计模式复习小结一(Strategy Pattern/Observer Pattern/Decorator Patter/Factory Pattern)
    学习定制自己的博文1
    SQLServer复习文档1(with C#)
    C#学习笔记-基础知识篇(不定期更新)
    C#学习笔记-迭代器模式
    C#学习笔记-组合模式
    C#学习笔记-备忘录模式
    C#学习笔记-适配器模式
    C#学习笔记-状态模式
  • 原文地址:https://www.cnblogs.com/Aaron-007/p/12814603.html
Copyright © 2011-2022 走看看