Mybatis学习第四天——一对一一对多
生活随笔
收集整理的這篇文章主要介紹了
Mybatis学习第四天——一对一一对多
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
兩表關系:
1.Mybatis中一對一關系
1 <!-- 兩表聯查,通過相同屬性user_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>一對一查詢的sql代碼,這里采用的是resultMap方式查詢,即在Orders類中定義一對一的User對象 private User user;
1 <!-- (均采用別名方式) 2 type:返回類型,同時也是主要依照的表 3 注意:在一對一關聯中不能省略屬性 4 association:一對一標簽 5 property:在Orders類中對應User的屬性名,Orders與type中的類型需一致 6 javaType:該一對一關系,對應的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標簽表示唯一性,一般是選取該表的id字段,當出現一對一、一對多關系時涉及2個id,那么可以選取表中(能訪問的任意屬性)能夠表示該表唯一性的屬性放在id標簽中,上面代碼此時order表中user_id字段與user表中id一致,故可以作為唯一性標志,若只能找到該表的id為唯一性屬性,同時另一張表中已采用id為唯一標簽,此時可以對id進行別名區別。別名操作在sql語句中執行。
2.Mybatis中一對多關系
一對多關系與一對一相似,主要在標簽方面有些區別
1 <!-- 此次將user表作為主表,主表中不可能出現重復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 <!-- 一對多中不能簡單地將javaType賦為Orders類型 7 此時Mybatis不能自動區別是否為集合屬性,此時須通過ofType設置屬性類型 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>?
轉載于:https://www.cnblogs.com/lisd/p/10277806.html
總結
以上是生活随笔為你收集整理的Mybatis学习第四天——一对一一对多的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最短路径之--floyd算法--多源最短
- 下一篇: 废单是什么意思