美文网首页
关联查询

关联查询

作者: 充满智慧的白痴 | 来源:发表于2019-12-17 11:46 被阅读0次

一对一

<select id="selectOrderAndUserByOrderID" resultMap="getOrderAndUser">
        select * from orders o,user u where o.user_id=u.id and o.id=#{id}
 </select>
 <resultMap type="com.ys.po.Orders" id="getOrderAndUser">
 <!--
 id:指定查询列表唯一标识,如果有多个唯一标识,则配置多个id
 column:数据库对应的列
 property:实体类对应的属性名
 -->
     <id column="id" property="id"/>
     <result column="user_id" property="userId"/>
     <result column="number" property="number"/>
     <!--association:用于映射关联查询单个对象的信息
 property:实体类对应的属性名
 javaType:实体类对应的全类名
 -->
 // 在user表里面搜索出来的内容将会现在关联的字段association之中
     <association property="user" javaType="com.ys.po.User">
 <!--
 id:指定查询列表唯一标识,如果有多个唯一标识,则配置多个id
 column:数据库对应的列
 property:实体类对应的属性名
 -->
         <id column="id" property="id"/>
         <result column="username" property="username"/>
         <result column="sex" property="sex"/>
     </association>
 </resultMap>

使用mybatis的思想来写程序

使用面向对象的思想来解释程序

直接写sql的一对一查询中,另外一张表的查询结果将会放在association标签中,而这个标签也需要一个javaType,作为返回,其中的的列名也和该类型相对应

 select user_id from order WHERE id=1;//得到user_id
 select * from user WHERE id=1  //1 是上一个查询得到的user_id的值
 property:别名(属性名)    column:列名 -->
 <select id="getOrderByOrderId" resultMap="getOrderMap">
       select * from order where id=#{id}
 </select>
<resultMap type="com.ys.po.Orders" id="getOrderMap">
     <id column="id" property="id"/>
     <result column="number" property="number"/>
     <association property="userId"  column="id" select="getUserByUserId"></association>
 </resultMap>
<select id="getUserByUserId" resultType="com.ys.po.User">
         select * from user where id=#{id}
</select>
// 使用嵌套查询的方式, association有三个参数,
//property:指定主查询语句传入的副查询语句的字段
//column:指定主查询语句传入的字段对应副查询语句的字段名
//select指定副查询语句的id

写嵌套分多条写sql,明确传入的字段的对应关系,选择副查询语句

一对多

<resultMap type="com.sftest.model.User" id="getUserAndOrders">
        <!--id:指定查询列表唯一标识,如果有多个唯一标识,则配置多个id
        column:数据库对应的列
        property:实体类对应的属性名 -->
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="password" property="password"/>
        <result column="email" property="email"/>
        <result column="birthday" property="birthday"/>
        <result column="phone" property="phone"/>
        <result column="url" property="url"/>
        <!--
        property:实体类中定义的属性名
        ofType:指定映射到集合中的全类名
        -->
        <collection property="orders" ofType="com.sftest.model.Order">
            <id column="id" property="id"/>
            <result column="order_name" property="orderName"/>
        </collection>
</resultMap>

一对多的情况下,使用collection来装载List

多对多

相关文章

  • python面试题01

    1、什么是多表关联查询,有几种多表关联的查询方式,分别是什么? 多表关联查询概念: 多表关联查询分类:1.1内连接...

  • 关联关系查询(第一讲)

    关联查询 当查询内容涉及到具有关联关系的多个表时,就需要使用关联查询。根据表与表之间的关联关系的不同,关联查询分为...

  • 关于关联查询的处理

    mybatis关联查询配置有2种:关联嵌套结果,关联嵌套查询关联的查询过程中如果关联的表可能查到很多数据,应该考虑...

  • MySQL的多表关联查询

    一、多表关联查询 多表关联查询是使用一条SQL语句,将关联的多张表的数据查询出来。 1.1 交叉查询 交叉查询就是...

  • 数据库笔记-SQL子查询

    子查询:关联查询和非关联查询 子查询是「查询」中的「查询」,就是「嵌套查询」。 以 NBA 的SQL数据库文件为例...

  • 关联查询、子查询与分页查询

    关联查询 关联关系分为一对一,一对多,多对多关系关联查询就是从多张表中查询数据,当我们使用n张表使用关联查询,至少...

  • 2018-07-12 Mybatis的一对一关联查询

    //一对一关联查询,以订单为中心 关联用户查询

  • Oracle学习(二)

    --======================================多表关联查询--查询员工编号,员工...

  • SQL必知必会(子查询)

    一、什么是关联子查询,什么是非关联子查询 子查询虽然是一种嵌套查询的形式,不过我们依然可以依据子查询是否执行多次,...

  • 一文详解 SQL 关联子查询

    本文主要介绍什么是关联子查询以及如何将关联子查询改写为普通语义的sql查询。 在背景介绍中我们将讲讲常见的关联子查...

网友评论

      本文标题:关联查询

      本文链接:https://www.haomeiwen.com/subject/pcbouctx.html