国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Mybatis_day05:關(guān)聯(lián)查詢

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
本篇給大家介紹Mybatis_day05:關(guān)聯(lián)查詢。

 關(guān)聯(lián)查詢

一對(duì)一查詢

案例:查詢所有訂單信息,關(guān)聯(lián)查詢下單用戶信息。

注意:因?yàn)橐粋€(gè)訂單信息只會(huì)是一個(gè)人下的訂單,所以從查詢訂單信息出發(fā)關(guān)聯(lián)查詢用戶信息為一對(duì)一查詢。如果從用戶信息出發(fā)查詢用戶下的訂單信息則為一對(duì)多查詢,因?yàn)橐粋€(gè)用戶可以下多個(gè)訂單。

方法一:

使用resultType,定義訂單信息po類,此po類中包括了訂單信息和用戶信息:

Sql語(yǔ)句:

  1. SELECT 
  2.  
  3. orders.*, 
  4.  
  5. user.username, 
  6.  
  7. userss.address 
  8.  
  9. FROM 
  10.  
  11. orders, 
  12.  
  13. user 
  14.  
  15. WHERE orders.user_id = user.id 

定義po類

 

Po類中應(yīng)該包括上邊sql查詢出來(lái)的所有字段,如下:

  1. public class OrdersCustom extends Orders { 
  2.  
  3. private String username;// 用戶名稱 
  4.  
  5. private String address;// 用戶地址 
  6.  
  7. get/set。。。。 
  8.  
  9. OrdersCustom類繼承Orders類后OrdersCustom類包括了Orders類的所有字段,只需要定義用戶的信息字段即可。 

Mapper.xml

  1. <!-- 查詢所有訂單信息 --> 
  2.  
  3. <select id="findOrdersList" resultType="com.pp.mybatis.po.OrdersCustom"
  4.  
  5. SELECT 
  6.  
  7. orders.*, 
  8.  
  9. user.username, 
  10.  
  11. user.address 
  12.  
  13. FROM 
  14.  
  15. orders, user 
  16.  
  17. WHERE orders.user_id = user.id 
  18.  
  19. </select

Mapper接口:

  1. public List<OrdersCustom> findOrdersList() throws Exception; 
  2.  
  3. 測(cè)試: 
  4.  
  5. Public void testfindOrdersList()throws Exception{ 
  6.  
  7. //獲取session 
  8.  
  9. SqlSession session = sqlSessionFactory.openSession(); 
  10.  
  11. //獲限mapper接口實(shí)例 
  12.  
  13. UserMapper userMapper = session.getMapper(UserMapper.class); 
  14.  
  15. //查詢訂單信息 
  16.  
  17. List<OrdersCustom> list = userMapper.findOrdersList(); 
  18.  
  19. System.out.println(list); 
  20.  
  21. //關(guān)閉session 
  22.  
  23. session.close(); 
  24.  

小結(jié):

定義專門的po類作為輸出類型,其中定義了sql查詢結(jié)果集所有的字段。此方法較為簡(jiǎn)單,企業(yè)中使用普遍。

方法二:

使用resultMap,定義專門的resultMap用于映射一對(duì)一查詢結(jié)果。

 

Sql語(yǔ)句:

  1. SELECT 
  2.  
  3. orders.*, 
  4.  
  5. user.username, 
  6.  
  7. user.address 
  8.  
  9. FROM 
  10.  
  11. orders, 
  12.  
  13. user 
  14.  
  15. WHERE orders.user_id = user.id 

定義po類

 

在Orders類中加入U(xiǎn)ser屬性,user屬性中用于存儲(chǔ)關(guān)聯(lián)查詢的用戶信息,因?yàn)橛唵侮P(guān)聯(lián)查詢用戶是一對(duì)一關(guān)系,所以這里使用單個(gè)User對(duì)象存儲(chǔ)關(guān)聯(lián)查詢的用戶信息。

  1. public class Orders { 
  2.  
  3. private Integer id; 
  4.  
  5. private Integer userId; 
  6.  
  7. private String number; 
  8.  
  9. private Date createtime; 
  10.  
  11. private String note; 
  12.  
  13. private User user
  14.  
  15. public Integer getId() { 
  16.  
  17. return id; 
  18.  
  19.  
  20. public void setId(Integer id) { 
  21.  
  22. this.id = id; 
  23.  
  24.  
  25. public Integer getUserId() { 
  26.  
  27. return userId; 
  28.  
  29.  
  30. public void setUserId(Integer userId) { 
  31.  
  32. this.userId = userId; 
  33.  
  34.  
  35. public String getNumber() { 
  36.  
  37. return number; 
  38.  
  39.  
  40. public void setNumber(String number) { 
  41.  
  42. this.number = number; 
  43.  
  44.  
  45. public Date getCreatetime() { 
  46.  
  47. return createtime; 
  48.  
  49.  
  50. public void setCreatetime(Date createtime) { 
  51.  
  52. this.createtime = createtime; 
  53.  
  54.  
  55. public String getNote() { 
  56.  
  57. return note; 
  58.  
  59.  
  60. public void setNote(String note) { 
  61.  
  62. this.note = note; 
  63.  
  64.  
  65. public User getUser() { 
  66.  
  67. return user
  68.  
  69.  
  70. public void setUser(User user) { 
  71.  
  72. this.user = user
  73.  
  74.  
  75. @Override 
  76.  
  77. public String toString() { 
  78.  
  79. return "Orders{" + 
  80.  
  81. "id=" + id + 
  82.  
  83. ", userId=" + userId + 
  84.  
  85. ", number='" + number + '\'' + 
  86.  
  87. ", createtime=" + createtime + 
  88.  
  89. ", note='" + note + '\'' + 
  90.  
  91. ", user=" + user + 
  92.  
  93. '}'
  94.  
  95.  

Mapper.xml

  1. <!-- 查詢訂單關(guān)聯(lián)用戶信息使用resultmap --> 
  2.  
  3. <resultMap type="com.pp.po.Orders" id="orderUserResultMap"
  4.  
  5. <id column="id" property="id"/> 
  6.  
  7. <result column="user_id" property="userId"/> 
  8.  
  9. <result column="number" property="number"/> 
  10.  
  11. <result column="createtime" property="createtime"/> 
  12.  
  13. <result column="note" property="note"/> 
  14. <!-- 一對(duì)一關(guān)聯(lián)映射 --> 
  15. <!-- 
  16. property:Orders對(duì)象的user屬性 
  17.  
  18. javaType:user屬性對(duì)應(yīng) 的類型 
  19.  
  20. --> 
  21.  
  22. <association property="user" javaType="com.pp.po.User"
  23.  
  24. <!-- column:user表的主鍵對(duì)應(yīng)的列 property:user對(duì)象中id屬性--> 
  25.  
  26. <id column="user_id" property="id"/> 
  27.  
  28. <result column="username" property="username"/> 
  29.  
  30. <result column="address" property="address"/> 
  31.  
  32. </association> 
  33.  
  34. </resultMap> 
  35.  
  36. <select id="findOrdersWithUserResultMap" resultMap="orderUserResultMap"
  37.  
  38. SELECT 
  39.  
  40. o.id, 
  41.  
  42. o.user_id, 
  43.  
  44. o.number, 
  45.  
  46. o.createtime, 
  47.  
  48. o.note, 
  49.  
  50. u.username, 
  51.  
  52. u.address 
  53.  
  54. FROM 
  55.  
  56. orders o 
  57.  
  58. JOIN `user` u ON u.id = o.user_id 
  59.  
  60. </select
  61.  
  62. 這里resultMap指定orderUserResultMap。 
  63.  
  64. association:表示進(jìn)行關(guān)聯(lián)查詢單條記錄 
  65.  
  66. property:表示關(guān)聯(lián)查詢的結(jié)果存儲(chǔ)在com.pp.mybatis.po.Orders的user屬性中 
  67.  
  68. javaType:表示關(guān)聯(lián)查詢的結(jié)果類型 
  69.  
  70. <id property="id" 
  71.  
  72. column="user_id"/>:查詢結(jié)果的user_id列對(duì)應(yīng)關(guān)聯(lián)對(duì)象的id屬性,這里是<id 
  73.  
  74. />表示user_id是關(guān)聯(lián)查詢對(duì)象的唯一標(biāo)識(shí)。 
  75.  
  76. <result property="username" 
  77.  
  78. column="username"/>:查詢結(jié)果的username列對(duì)應(yīng)關(guān)聯(lián)對(duì)象的username屬性。 

Mapper接口:

  1. public List<Orders> findOrdersListResultMap() throws Exception; 
  2.  
  3. 測(cè)試: 
  4.  
  5. Public void testfindOrdersListResultMap()throws Exception{ 
  6.  
  7. //獲取session 
  8.  
  9. SqlSession session = sqlSessionFactory.openSession(); 
  10.  
  11. //獲限mapper接口實(shí)例 
  12.  
  13. UserMapper userMapper = session.getMapper(UserMapper.class); 
  14.  
  15. //查詢訂單信息 
  16.  
  17. List<Orders> list = userMapper.findOrdersList2(); 
  18.  
  19. System.out.println(list); 
  20.  
  21. //關(guān)閉session 
  22.  
  23. session.close(); 
  24.  

小結(jié):

使用association完成關(guān)聯(lián)查詢,將關(guān)聯(lián)查詢信息映射到pojo對(duì)象中。

一對(duì)多查詢

案例:查詢所有用戶信息及用戶關(guān)聯(lián)的訂單信息。

用戶信息和訂單信息為一對(duì)多關(guān)系。

使用resultMap實(shí)現(xiàn)如下:

 

Sql語(yǔ)句:

  1. SELECT 
  2.  
  3. u.*, o.id oid, 
  4.  
  5. o.number, 
  6.  
  7. o.createtime, 
  8.  
  9. o.note 
  10.  
  11. FROM 
  12.  
  13. `user` u 
  14.  
  15. LEFT JOIN orders o ON u.id = o.user_id 

定義po類

 

在User類中加入List orders屬性

  1. public class User { 
  2.  
  3. private int id; 
  4.  
  5. private String username; 
  6.  
  7. private String sex; 
  8.  
  9. private Date birthday; 
  10.  
  11. private String address; 
  12.  
  13. private List<Orders> ordersList; 
  14.  
  15. @Override 
  16. public String toString() { 
  17. return "User{" + 
  18. "id=" + id + 
  19. ", username='" + username + '\'' + 
  20. ", sex='" + sex + '\'' + 
  21. ", birthday=" + birthday + 
  22.  
  23. ", address='" + address + '\'' + 
  24.  
  25. ", ordersList=" + ordersList + 
  26.  
  27. '}'
  28.  
  29.  
  30. public List<Orders> getOrdersList() { 
  31.  
  32. return ordersList; 
  33.  
  34.  
  35. public void setOrdersList(List<Orders> ordersList) { 
  36.  
  37. this.ordersList = ordersList; 
  38.  
  39.  
  40. public int getId() { 
  41.  
  42. return id; 
  43.  
  44.  
  45. public void setId(int id) { 
  46.  
  47. this.id = id; 
  48.  
  49.  
  50. public String getUsername() { 
  51.  
  52. return username; 
  53.  
  54.  
  55. public void setUsername(String username) { 
  56.  
  57. this.username = username; 
  58.  
  59.  
  60. public String getSex() { 
  61.  
  62. return sex; 
  63.  
  64.  
  65. public void setSex(String sex) { 
  66.  
  67. this.sex = sex; 
  68.  
  69.  
  70. public Date getBirthday() { 
  71.  
  72. return birthday; 
  73.  
  74.  
  75. public void setBirthday(Date birthday) { 
  76.  
  77. this.birthday = birthday; 
  78.  
  79.  
  80. public String getAddress() { 
  81.  
  82. return address; 
  83.  
  84.  
  85. public void setAddress(String address) { 
  86.  
  87. this.address = address; 
  88.  
  89.  

Mapper.xml

  1. <resultMap type="com.pp.po.user" id="userOrderResultMap"
  2.  
  3. <!-- 用戶信息映射 --> 
  4.  
  5. <id property="id" column="id"/> 
  6.  
  7. <result property="username" column="username"/> 
  8.  
  9. <result property="birthday" column="birthday"/> 
  10.  
  11. <result property="sex" column="sex"/> 
  12.  
  13. <result property="address" column="address"/> 
  14.  
  15. <!-- 一對(duì)多關(guān)聯(lián)映射 --> 
  16.  
  17. <collection property="orders" ofType="com.pp.po.Orders"
  18.  
  19. <id property="id" column="oid"/> 
  20.  
  21. <!--用戶id已經(jīng)在user對(duì)象中存在,此處可以不設(shè)置--> 
  22.  
  23. <!-- <result property="userId" column="id"/> --> 
  24.  
  25. <result property="number" column="number"/> 
  26.  
  27. <result property="createtime" column="createtime"/> 
  28.  
  29. <result property="note" column="note"/> 
  30.  
  31. </collection> 
  32.  
  33. </resultMap> 
  34.  
  35. <select id="getUserOrderList" resultMap="userOrderResultMap"
  36.  
  37. SELECT 
  38.  
  39. u.*, o.id oid, 
  40.  
  41. o.number, 
  42.  
  43. o.createtime, 
  44.  
  45. o.note 
  46.  
  47. FROM 
  48.  
  49. `user` u 
  50.  
  51. LEFT JOIN orders o ON u.id = o.user_id 
  52.  
  53. </select

collection部分定義了用戶關(guān)聯(lián)的訂單信息。表示關(guān)聯(lián)查詢結(jié)果集

property="orders":關(guān)聯(lián)查詢的結(jié)果集存儲(chǔ)在User對(duì)象的上哪個(gè)屬性。

ofType="orders":指定關(guān)聯(lián)查詢的結(jié)果集中的對(duì)象類型即List中的對(duì)象類型。此處可以使用別名,也可以使用全限定名。

的意義同一對(duì)一查詢。

 

Mapper接口:

  1. List<User> getUserOrderList(); 

測(cè)試

  1. @Test 
  2.  
  3. public void getUserOrderList() { 
  4.  
  5. SqlSession session = sqlSessionFactory.openSession(); 
  6.  
  7. UserMapper userMapper = session.getMapper(UserMapper.class); 
  8.  
  9. List<User> result = userMapper.getUserOrderList(); 
  10.  
  11. for (User user : result) { 
  12.  
  13. System.out.println(user); 
  14.  
  15.  
  16. session.close(); 
  17.  

 

責(zé)任編輯:姜華 來(lái)源: 鍵盤蜂
相關(guān)推薦

2009-09-25 10:22:35

Hibernate多表

2017-07-25 15:35:07

MysqlMysql優(yōu)化LIMIT分頁(yè)

2012-06-05 02:20:24

JPAJava查詢語(yǔ)言

2010-06-03 09:24:46

Oracle

2021-10-12 05:00:27

PandasSQL查詢

2021-09-02 18:36:35

SQLWhereOn

2020-11-09 10:16:41

Mybatis

2015-03-18 13:18:45

MySQLSQL優(yōu)化

2022-05-11 09:34:15

云原生集群數(shù)倉(cāng)

2009-09-23 09:16:25

Hibernate復(fù)合

2022-07-05 10:50:31

數(shù)據(jù)庫(kù)查詢實(shí)戰(zhàn)

2020-11-04 08:28:11

Mybatis

2023-02-24 08:19:59

MySQL索引失效

2021-04-23 09:09:19

GraphQLREST查詢

2011-07-20 10:01:22

SQL Server數(shù)關(guān)聯(lián)表

2023-04-12 08:14:10

mysql關(guān)聯(lián)字段索引

2022-11-11 07:48:56

ORM鏈?zhǔn)?/a>輪播圖

2021-05-11 11:05:43

SAL子查詢

2009-11-24 19:40:07

PHP關(guān)聯(lián)數(shù)組查詢結(jié)果

2020-08-31 08:45:43

多表查詢SQL數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

超碰在线12| 男人最爱成人网| 久久综合九色综合欧美98 | 色鬼7777久久| 91蝌蚪porny| 欧美日韩激情四射| 99在线精品视频在线观看| 国产成人啪精品视频免费网| 国产欧美自拍| 国产午夜精品一区二区三区| 福利写真视频网站在线| 色婷婷精品久久二区二区蜜臀av | 美日韩精品视频免费看| 日本高清不卡一区二区三区视频 | 久久久久一区| 国产精品一区二区三区在线观| 日韩aaaa| 国产一区二区丝袜高跟鞋图片| 希岛爱理av免费一区二区| 欧美激情在线播放| 一区二区三区四区视频免费观看 | 欧美国产中文高清| 色综合天天狠天天透天天伊人| 高清在线一区二区| 欧美激情a∨在线视频播放| 超碰成人在线观看| 欧洲中文字幕国产精品| 日韩欧美视频| 精品国产综合| 精品写真视频在线观看| 国产亚洲黄色片| 国产亚洲一区二区三区在线观看| 男人插女人下面免费视频| 亚洲婷婷综合久久一本伊一区| 22288色视频在线观看| 色就色 综合激情| 日韩激情av| 色悠悠久久88| 久久不见久久见国语| 成人免费在线视频网址| 久久av一区| 欧美黑人在线观看| 国产精品久久久久久户外露出| а√最新版在线天堂| 亚洲精品成人悠悠色影视| 精品视频二区| 亚洲精品在线一区二区| 日韩漫画puputoon| 欧美亚洲视频在线看网址| 天天综合亚洲| 伊人天天久久大香线蕉av色| 久久日韩粉嫩一区二区三区| 性综艺节目av在线播放| 日韩欧美中文字幕制服| 日韩在线观看一区二区三区| 国产色综合天天综合网| 久久一区视频| 国产精品人人妻人人爽人人牛| 亚洲a一区二区| 欲香欲色天天天综合和网| 777午夜精品福利在线观看| 精品二区久久| 成年丰满熟妇午夜免费视频 | aaa在线观看| 国产99久久| 久久综合九色综合97_久久久| 丰满人妻一区二区三区53号| 久久综合久久鬼色| 亚洲精品套图| 日韩天堂在线观看| 亚洲va韩国va欧美va精四季| 国产一区不卡视频| 成年人黄视频网站| 精品久久国产| 亚洲第一视频网| 亚洲天堂av在线| 欧美亚洲在线观看| 日韩av网站免费在线| 香蕉视频网站入口| 日韩一区二区影院| youjizz亚洲| 日韩欧美一区二区三区四区五区| 91麻豆成人久久精品二区三区| 中文在线а天堂av| 亚洲人成网7777777国产| 操欧美老女人| 欧美成人xxxxx| 欧美一区二区三区思思人| 国产suv精品一区| 婷婷亚洲婷婷综合色香五月| 一区二区在线观看视频在线观看| 91精品产国品一二三产区| 91人人爽人人爽人人精88v| 91免费在线播放| 超碰在线观看免费| 国产在线高清精品| 国产女人aaa级久久久级| 日韩av激情| 亚洲资源在线看| 成人美女视频| 91精品久久久久久久久久| 91在线视频官网| 黄色小说在线播放| 91成人免费观看| 亚洲手机成人高清视频| 日韩av黄色| 成年在线观看视频| 欧美成人三级在线| 女人香蕉久久**毛片精品| 成人拍拍拍免费视频网站| 最近中文字幕2019免费| 日韩二区三区四区| 麻豆传媒视频在线| 97超碰人人模人人爽人人看| 亚洲欧美在线视频| 欧美高清你懂的| 成人高清dvd| 精品电影一区二区三区| 亚洲激情偷拍| h视频在线免费| www.成人三级视频| 欧美日韩国产精品专区 | 欧美日韩一区二区视频在线| 午夜电影网一区| 都市激情亚洲| 婷婷免费在线观看| 欧美激情乱人伦| 婷婷精品在线| 日韩高清在线不卡| 欧美hdfree性xxxx| 97色在线视频观看| 91色乱码一区二区三区| 永久免费毛片在线播放| 免费成人在线观看av| 91福利精品第一导航| 久久国产亚洲| 国产在线黄色片| 69av在线播放| 国产欧美精品一区二区色综合朱莉| 免费成人直播| 欧美在线观看视频免费| 亚洲精品国精品久久99热一| 视频精品一区二区| 手机电影在线观看| 视频在线观看成人| 日韩高清欧美高清| 国产一区欧美一区| 日韩一区二区三区在线免费观看 | 中文字幕在线不卡一区| 欧美做受69| 91网页版在线登录入口| 91精品视频大全| 欧美日韩一区在线| 青青草国产精品亚洲专区无| 男人久久天堂| 国模吧无码一区二区三区| 欧美激情国产日韩精品一区18| 国产精品三级视频| 日韩欧美一区二区三区在线视频| 日本在线丨区| 日韩精品不卡| 在线播放国产一区二区三区| 91免费看片在线观看| 日本中文字幕在线一区| 五月天天在线| 亚洲成人第一| 久久综合色影院| 亚洲啪啪综合av一区二区三区| 一区二区蜜桃| 白浆视频在线观看| 无人在线观看的免费高清视频| 奇米成人av国产一区二区三区| 午夜不卡在线视频| 蜜臀91精品一区二区三区| 亚洲精品一区二区三区中文字幕 | 4虎在线播放1区| 91精品国产一区二区三区动漫 | 日本在线不卡一区| 国产乱码精品一区二区三区亚洲人| 1pon在线| 日韩精品无码一区二区三区| 精品国产一区久久久| 亚洲午夜日本在线观看| 日韩国产精品大片| 草草视频在线一区二区| av影片免费在线观看| 人人妻人人添人人爽欧美一区| 国产精品久久久久9999| 亚洲成人激情在线| 亚洲美女免费视频| 久久99久久99| 欧美日韩色图| 亚洲a∨精品一区二区三区导航| 国产区视频在线观看| 亚洲精品二区| 国产成人综合av| 亚洲精品丝袜日韩| 欧美性黄网官网| 国产欧美一区二区精品忘忧草| 亚洲第一区色|