mybatis 高级映射(使用xml方式解决)

本文以用户表为例下面以user代替。
其中所有的resultmap都是写在user表对应的xml文件之中。
一对一
resultType
每一条查询new一个新类继承主类,其中新类只需要需求的那几个属性
resultMap
定义一个resultMap 然后在select语句中调用resultMap

  
<resultMap type="cn.itcast.mybatis.po.Orders"id="userordermap">  
  
<id property="id" column="id"/>  
<resultpropertyresultproperty="user_id" column="user_id"/>  
<resultpropertyresultproperty="number" column="number"/>  
<associationpropertyassociationproperty="user" javaType="cn.itcast.mybatis.po.User">  
  
<id property="id" column="user_id"/>  
<resultpropertyresultproperty="username" column="username"/>  
<resultpropertyresultproperty="address" column="address"/>  
association>  
resultMap>  

一对多 (订单信息与订单明细是一对多的关系)
Resultmap,比resulttype少了去重环节


 1.   
2.<resultMap typeresultMaptype="cn.itcast.mybatis.po.Orders"id="userorderdetailmap">  
3.<id property="id"column="id"/>  
4.<result property="user_id" column="user_id"/>  
5.<result property="number" column="number"/>  
6.<association property="user" javaType="cn.itcast.mybatis.po.User">  
7.<id property="id" column="user_id"/>  
8.<result property="username" column="username"/>  
9.<result property="address" column="address"/>  
10.association>  
11.<collection propertycollectionproperty="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">  
12.    <id property="id" column="orderdetail_id"/>  
13.    <result property="items_id" column="items_id"/>  
14.    <result property="items_num" column="items_num"/>  
15.collection>  
16.resultMap>  

1.<resultMap typeresultMaptype="cn.itcast.mybatis.po.Orders" id="userorderdetailmap" extends="userordermap">  
2.<collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">  
3.   <id property="id" column="orderdetail_id"/>  
4.   <result property="items_id" column="items_id"/>  
5.   <result property="items_num" column="items_num"/>  
6.collection>  
7.resultMap>  
1.   <select idselectid="findOrdersDetailList" resultMap="userorderdetailmap">  
2.    SELECT  
3.    orders.*,  
4.    user.username,  
5.    user.address,  
6.    orderdetail.id orderdetail_id,  
7.    orderdetail.items_id,  
8.    orderdetail.items_num  
9.    FROM orders,user,orderdetail  
10.    WHERE orders.user_id = user.id  
11.    AND orders.id =orderdetail.orders_id  
12.select>     

多对多映射
查询用户购买的商品信息(一个用户可以有N个订单信息,每个订单信息可以有M个商品信息,所以我们需要查询所有的用户信息,关联查询订单及订单明细信息,订单名信息中关联查询商品信息) 多个订单,多个商品信息
明确有几个po类参与此次活动:oders / user / oderdetail订单信息表 / items 商品表

对于po类的改动 在User中添加Listorders 属性;在Orders类中加入List orderdetails属性;Items类,不用动 。

1."cn.itcast.mybatis.po.User"id="userOrderListResultMap">  
2.       <id column="user_id"property="id"/>  
3.       <result column="username"property="username"/>  
4.       property="orders"ofType="cn.itcast.mybatis.po.Orders">  
5.          <id  column="id"property="id"/>  
6.          <result property="number" column="number"/>  
7.          property="orderdetails"ofType="cn.itcast.mybatis.po.Orderdetail">  
8.               <id  column="orderdetail_id" property="id"/>  
9.               <result property="ordersId"column="id"/>  
10.               <result property="itemsId"column="items_id"/>  
11.               <result property="itemsNum"column="items_num"/>  
12.               property="items"javaType="cn.itcast.mybatis.po.Items">  
13.                   <id column="items_id" property="id"/>  
14.                   <result column="items_name" property="name"/>  
15.                   <result column="items_detail" property="detail"/>  
16.                
17.           
18.       
19.  

一个用户对应多个订单,一个订单对应多个订单信息,一个订单信息对应一个商品

1."findUserItemResultMap" resultMap="UserItemResultMap" >          
2.       select orders.*,  
3.              user.username,  
4.              user.sex,  
5.              user.address,  
6.              orderdetail.id,  
7.              orderdetail_id,  
8.              orderdetail.items_id,  
9.              orderdetail.items_num,  
10.              orderdetail.orders_id,  
11.              item.id item_id,  
12.              item.name item_name,  
13.              item.detail item_detail,  
14.              item.price item_price   
15.       from orders,user,orderdetail,item   
16.       where orders.user_id=user.id   
17.            and orders.id=orderdetail.orders_id   
18.            and orderdetail.items_id=item.id  
19.  

你可能感兴趣的:(MyBatis,MyBatis,高级映射)