---------------------------------
一つのクエリ
の順序を作成するには、ユーザーを照会するために関連するクエリのための情報、情報
1.高度なマッピング - 1つのクエリ - 使用resultTypeと
2.高度なマッピング - 1つのクエリ - 使用このresultMap
mapper.xml定義されたマッピングresultmapのこの
<!-- 订单查询关联用户的resultMap
将整个查询的结果映射到cn.itcast.mybatis.po.Orders中
-->
<resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap">
<!-- 配置映射的订单信息 -->
<!-- id:指定查询列中的唯 一标识,订单信息的中的唯 一标识,如果有多个列组成唯一标识,配置多个id
column:订单信息的唯 一标识 列
property:订单信息的唯 一标识 列所映射到Orders中哪个属性
-->
<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/>
<!-- 配置映射的关联的用户信息 -->
<!-- association:用于映射关联查询单个对象的信息
property:要将关联查询的用户信息映射到Orders中哪个属性 javaType:表示该属性对应的实体类型
-->
<association property="user" javaType="cn.itcast.mybatis.po.User">
<!-- id:关联查询用户的唯 一标识
column:指定唯 一标识用户信息的列 指查询出来的列
property:映射到user的哪个属性
-->
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="sex" property="sex"/>
<result column="address" property="address"/>
</association>
</resultMap>
resultTypeとし、このresultMapは、1つのクエリの概要を達成します
resultTypeとは:列名をチェックアウトPOJO含まれていない場合は、Use resultTypeとは、よりシンプルに実現する、カラム名は、マッピングを完了するために、対応する属性を増やす必要があります。
クエリ結果の特別な要件がない場合resultTypeとをお勧めします。
このresultMapは:協会のこのresultMapクエリ属性マッピングのPOJOを使用して行うことができ、クエリ結果のための特別な要件がある場合はこのresultMapの必要性は、少しトラブルを達成するために、個別に定義されます。
このresultMapは、遅延ロードを実装することができ、resultTypeとは、遅延ロードを達成することはできません。
--------------------------------------------------
多くのクエリ
上記に基づいて一に、クエリに関連付けられた注文の詳細を追加
メインクエリのテーブルを決定します。表受注
関連のルックアップテーブルを決定します。注文の詳細
ユーザテーブル:関連付けを決定するためにルックアップ・テーブル
エンティティクラス:
SQL文と対応する結果:
mapper.xml構成さこのresultMap
<!--
查询订单信息 关联查询用户以及订单明细信息 因为订单和用户的ResultMap已经在上面定义所以这里使用extends之后
只需要配置订单明细的映射关系即可
-->
<resultMap type="org.mybatis.po.Orders" id="OrdersAndUserAndOrderDetailResultMap" extends="OrdersUserResultMap">
<!-- 订单信息 -->
<!-- 用户信息 -->
<!-- 使用extends继承,不用在中配置订单信息和用户信息的映射 -->
<!-- 订单明细信息
一个订单关联查询出了多条明细,要使用collection进行映射
collection:对关联查询到多条记录映射到集合对象中
property:将关联查询到多条记录映射到org.mybatis.po.Orders哪个属性
ofType:指定映射到list集合属性中pojo的类型
-->
<collection property="orderdetailList" ofType="org.mybatis.po.Orderdetail">
<!-- id:订单明细唯 一标识
property:要将订单明细的唯 一标识 映射到org.mybatis.po.Orderdetail的哪个属性
-->
<id column="orderdetailid" property="id"/>
<result column="orders_id" property="ordersId"/>
<result column="items_id" property="itemsId"/>
<result column="items_num" property="itemsNum"/>
</collection>
</resultMap>
オブジェクトの文:
<!-- 查询订单信息 关联查询用户以及订单明细信息 mysql中注释:#-->
<select id="findOrdersAndUserAndOrderDetailResultMap" resultMap="OrdersAndUserAndOrderDetailResultMap">
select orders.*,#订单信息
user.username,user.sex,user.address,#用户数据
orderdetail.id as
orderdetailid,orderdetail.orders_id,orderdetail.items_id,orderdetail.items_num#订单明细数据
from orders,user,orderdetail
where orders.user_id=user.id and
orders.id=orderdetail.orders_id
</select>
マッパーインタフェース
テストカテゴリ:
デバッグブレークポイント:
----
------------------------------------------------
多くのクエリに多くの
SQL文:商品に細部の対応注文の詳細ごとに2つに対応する二つの注文に一つだけのユーザー対応をチェックしてください
エンティティクラス:
表関係:
オブジェクトの文:
<!-- 查询用户及其购买的商品信息 -->
<select id="findUserAndItemsResultMap" resultMap="UserAndItemsResultMap">
select
orders.*,#订单信息
user.username,user.sex,user.address,#用户数据
orderdetail.id
as
orderdetailid,orderdetail.orders_id,orderdetail.items_id,orderdetail.items_num,#订单明细数据
items.name,items.price,items.detail#商品数据
from
orders,user,orderdetail,items
where orders.user_id=user.id and
orders.id=orderdetail.orders_id and orderdetail.items_id=items.id
</select>
resultmapに定義:
<!-- 查询用户及购买的商品 type写的是user类的全路径 把数据映射到user中 -->
<resultMap type="org.mybatis.po.User" id="UserAndItemsResultMap">
<!-- 用户信息 -->
<id column="user_id" property="id" />
<result column="username" property="username" />
<result column="sex" property="sex" />
<result column="address" property="address" />
<!-- 订单信息一个用户对应多个订单,使用collection映射-->
<collection property="ordersList" ofType="org.mybatis.po.Orders">
<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" />
<!-- 订单明细一个订单包括 多个明细 -->
<collection property="orderdetailList" ofType="org.mybatis.po.Orderdetail">
<id column="orderdetailid" property="id" />
<result column="orders_id" property="ordersId" />
<result column="items_id" property="itemsId" />
<result column="items_num" property="itemsNum" />
<!-- 商品信息一个订单明细对应一个商品-->
<association property="items" javaType="org.mybatis.po.Items">
<id column="items_id" property="id"></id>
<result column="name" property="name" />
<result column="price" property="price" />
<result column="detail" property="detail" />
</association>
</collection>
</collection>
</resultMap>
テストカテゴリ:
デバッグブレークポイント:
一つだけのユーザーをチェック
二桁に対応
各行について詳細に対応する2
商品の内訳にそれぞれ対応し
-------------------------------------------------- -------------