mybatis的关联查询(一对一和一对多的实现)

1.一对一的关联查询

1.1. 准备查询的sql语句(“用户与订单”关联查询)

   select o.id o.name o.address u.name u.address from orders o left join user u on o.user_id=u.id

2.1.建立pojo实体类

order实体类属性加上 “对一”关系,private User user;

2.2.配置映射关系

<resultMap type="orders" id = "ordersUsersResultMap">

  <id column ="id" propertity="id" />

  <id column ="name" propertity="name" />

  <id column ="address" propertity="address" />

<!-- association:配置一对一个关联关系,说明:(也就是说要多配置一个返回值类型)

         property:要映射的属性名称

         javaType:要映射的属性类型(必须要指定) -->

     <association property="user" javaType="User">

         <!--配置用户的主键对应关系 -->

         <id column="user_id" property="id"/>

         <!-- 配置用户的普通字段对应关系 -->

         <result column="username" property="username"/>

         <result column="address" property="address"/>

     </association>

</resultMap>

2.3 用select标签查询

<select id="queryAllOrdersAndUsers" resultMap="ordersUsersResultMap">

    select o.id o.name o.address u.name u.address from orders o left join `user` u on o.user_id=u.id(加`是因为user是sql的关键字)

</select>

2.一对多的关联查询(一个用户的多个订单查询)

实现步骤差不多,不同之处在于

2.1  实体类的一对多关系体现。

private List<Orders> orderList;

2.2 映射关系Mapper.xml中的resultMap

<resultMap type="user" id="usersAndOrdersResultMap">

     <!-- 配置用户的主键对应关系 -->

     <id column="id" property="id"/>

     <!-- 配置用户的普通字段对应关系 -->

     <result column="username" property="username"/>

     <result column="address" property="address"/>  

     <!-- collection:配置一对多关联关系,说明:

         property:要映射的属性名称

         javaType:要映射的类型(可以指定,可以不指定,建议指定)

         ofType:集合中存放的类型(必须要指定) -->

     <collection property="ordersList" javaType="List" ofType="orders">

         <!-- 配置订单主键对应关系 -->

         <id column="oid" property="id"/>

         <!-- 配置订单的普通字段对应关系 -->

         <result column="name" property="name"/>

         <result column="address" property="address"/>

     </collection>

</resultMap>

  

猜你喜欢

转载自www.cnblogs.com/supertan/p/9220727.html