Mybatis学习第四天——一对一一对多
生活随笔
收集整理的這篇文章主要介紹了
Mybatis学习第四天——一对一一对多
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
兩表關(guān)系:
1.Mybatis中一對(duì)一關(guān)系
1 <!-- 兩表聯(lián)查,通過相同屬性u(píng)ser_id 2 left join 表示以左邊的表為主表 3 --> 4 <select id="findOrdersByUser" parameterType="User" resultMap="orders_user"> 5 select 6 o.id, 7 o.number, 8 o.createtime, 9 o.user_id, 10 u.username, 11 u.address 12 from orders o 13 left join user u 14 on o.user_id = u.id 15 </select>一對(duì)一查詢的sql代碼,這里采用的是resultMap方式查詢,即在Orders類中定義一對(duì)一的User對(duì)象 private User user;
1 <!-- (均采用別名方式) 2 type:返回類型,同時(shí)也是主要依照的表 3 注意:在一對(duì)一關(guān)聯(lián)中不能省略屬性 4 association:一對(duì)一標(biāo)簽 5 property:在Orders類中對(duì)應(yīng)User的屬性名,Orders與type中的類型需一致 6 javaType:該一對(duì)一關(guān)系,對(duì)應(yīng)的pojo類 8 --> 9 <resultMap type="Orders" id="orders_user"> 10 <id column="id" property="id"/> 11 <result column="number" property="number"/> 12 <result column="createtime" property="createtime"/> 13 <result column="user_id" property="userId"/> 14 15 <association property="user" javaType="User"> 16 <id column="user_id" property="id"/> 17 <result column="username" property="username"/> 18 <result column="address" property="address"/> 19 </association> 20 </resultMap>注意:id標(biāo)簽表示唯一性,一般是選取該表的id字段,當(dāng)出現(xiàn)一對(duì)一、一對(duì)多關(guān)系時(shí)涉及2個(gè)id,那么可以選取表中(能訪問的任意屬性)能夠表示該表唯一性的屬性放在id標(biāo)簽中,上面代碼此時(shí)order表中user_id字段與user表中id一致,故可以作為唯一性標(biāo)志,若只能找到該表的id為唯一性屬性,同時(shí)另一張表中已采用id為唯一標(biāo)簽,此時(shí)可以對(duì)id進(jìn)行別名區(qū)別。別名操作在sql語(yǔ)句中執(zhí)行。
2.Mybatis中一對(duì)多關(guān)系
一對(duì)多關(guān)系與一對(duì)一相似,主要在標(biāo)簽方面有些區(qū)別
1 <!-- 此次將user表作為主表,主表中不可能出現(xiàn)重復(fù)id --> 2 <select id="findUserByOrders" parameterType="Orders" resultMap="user_orders"> 3 select 4 o.id, 5 o.number, 6 o.createtime, 7 u.id uid, 8 u.username, 9 u.address 10 from user u 11 left join orders o 12 on o.user_id = u.id 13 </select> 1 <resultMap type="User" id="user_orders"> 2 <id column="uid" property="id"/> 3 <result column="username" property="username"/> 4 <result column="address" property="address"/> 5 6 <!-- 一對(duì)多中不能簡(jiǎn)單地將javaType賦為Orders類型 7 此時(shí)Mybatis不能自動(dòng)區(qū)別是否為集合屬性,此時(shí)須通過ofType設(shè)置屬性類型 8 --> 9 <collection property="order" ofType="Orders"> 10 <id column="id" property="id"/> 11 <result column="number" property="number"/> 12 <result column="createtime" property="createtime"/> 13 </collection> 14 </resultMap>?
轉(zhuǎn)載于:https://www.cnblogs.com/lisd/p/10277806.html
總結(jié)
以上是生活随笔為你收集整理的Mybatis学习第四天——一对一一对多的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最短路径之--floyd算法--多源最短
- 下一篇: loj 2542 随机游走 —— 最值反