一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 淺談resultMap的用法及關聯結果集映射

淺談resultMap的用法及關聯結果集映射

2021-09-23 00:40正在努力的陳序員 Java教程

這篇文章主要介紹了resultMap的用法及關聯結果集映射操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

resultType

resultType可以把查詢結果封裝到pojo類型中,但必須pojo類的屬性名和查詢到的數據庫表的字段名一致。

如果sql查詢到的字段與pojo的屬性名不一致,則需要使用resultMap將字段名和屬性名對應起來,進行手動配置封裝,將結果映射到pojo中

resultMap

resultMap可以實現將查詢結果映射為復雜類型的pojo,比如在查詢結果映射對象中包括pojo和list實現一對一查詢和一對多查詢。

淺談resultMap的用法及關聯結果集映射

先在Mapper文件中,配置基本的sql語句

  1. <!-- 查詢所有的訂單數據 -->
  2. <!-- resultMap:填入配置的resultMap標簽的id值 -->
  3. <select id="queryOrderAll" resultMap="orderResultMap">
  4. SELECT id, user_id,
  5. number,
  6. createtime, note FROM `order`
  7. </select>

配置resultMap標簽,映射不同的字段和屬性名

  1. <!-- resultMap最終還是要將結果映射到pojo上,type就是指定映射到哪一個pojo -->
  2. <!-- id:設置ResultMap的id -->
  3. <resultMap type="order" id="orderResultMap">
  4. <!-- 定義主鍵 ,非常重要。如果是多個字段,則定義多個id -->
  5. <!-- property:主鍵在pojo中的屬性名 -->
  6. <!-- column:主鍵在數據庫中的列名 -->
  7. <id property="id" column="id" />
  8.  
  9. <!-- 定義普通屬性 -->
  10. <result property="userId" column="user_id" />
  11. <result property="number" column="number" />
  12. <result property="createtime" column="createtime" />
  13. <result property="note" column="note" />
  14. </resultMap>

結果就可以封裝到pojo類型中

使用resultMap進行關聯查詢

一對一查詢

一對一數據模型:訂單用戶

一個訂單信息只會是一個人下的訂單,所以從查詢訂單信息出發關聯查詢用戶信息為一對一查詢。如果從用戶信息出發查詢用戶下的訂單信息則為一對多查詢,因為一個用戶可以下多個訂單。

淺談resultMap的用法及關聯結果集映射

改造pojo類

在訂單類中添加User屬性,User屬性是一個引用類型,用于存儲關聯查詢的用戶信息,因為關聯關系是一對一,所以只需要添加單個屬性即可

淺談resultMap的用法及關聯結果集映射

配置Mapper.xml配置文件

OrderMapper.xml

先使用id和result屬性,映射order類的結果集,然后在使用association映射關聯對象User的結果集

  1. <resultMap type="order" id="orderUserResultMap">
  2. <id property="id" column="id" />
  3. <result property="userId" column="user_id" />
  4. <result property="number" column="number" />
  5. <result property="createtime" column="createtime" />
  6. <result property="note" column="note" />
  7.  
  8. <!-- association :配置一對一屬性 -->
  9. <!-- property:order里面的User屬性名 -->
  10. <!-- javaType:屬性類型 -->
  11. <association property="user" javaType="user">
  12. <!-- id:聲明主鍵,表示user_id是關聯查詢對象的唯一標識-->
  13. <id property="id" column="user_id" />
  14. <result property="username" column="username" />
  15. <result property="address" column="address" />
  16. </association>
  17.  
  18. </resultMap>
  19.  
  20. <!-- 一對一關聯,查詢訂單,訂單內部包含用戶屬性 -->
  21. <select id="queryOrderUserResultMap" resultMap="orderUserResultMap">
  22. SELECT
  23. o.id,
  24. o.user_id,
  25. o.number,
  26. o.createtime,
  27. o.note,
  28. u.username,
  29. u.address
  30. FROM
  31. `order` o
  32. LEFT JOIN `user` u ON o.user_id = u.id
  33. </select>

測試

  1. @Test
  2. public void testQueryOrderUserResultMap() {
  3. // mybatis和spring整合,整合之后,交給spring管理
  4. SqlSession sqlSession = this.sqlSessionFactory.openSession();
  5. // 創建Mapper接口的動態代理對象,整合之后,交給spring管理
  6. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  7.  
  8. // 使用userMapper執行根據條件查詢用戶,結果封裝到Order類中
  9. List<Order> list = userMapper.queryOrderUserResultMap();
  10. for (Order o : list) {
  11. System.out.println(o);
  12. }
  13. // mybatis和spring整合,整合之后,交給spring管理
  14. sqlSession.close();
  15. }

結果

淺談resultMap的用法及關聯結果集映射

一對多查詢

查詢所有用戶信息及相關訂單。

修改pojo類,在pojo類添加訂單集合屬性

淺談resultMap的用法及關聯結果集映射

修改UserMapper.xml配置文件

先使用id和result配置映射User類的結果,然后使用一對多關系的collection標簽配置Order結果

  1. <resultMap type="user" id="userOrderResultMap">
  2. <id property="id" column="id" />
  3. <result property="username" column="username" />
  4. <result property="birthday" column="birthday" />
  5. <result property="sex" column="sex" />
  6. <result property="address" column="address" />
  7.  
  8. <!-- 配置一對多的關系
  9. property:填寫pojo類中集合類類屬性的名稱
  10. javaType:填寫集合類型的名稱
  11. -->
  12. <collection property="orders" javaType="list" ofType="order">
  13. <!-- 配置主鍵,是關聯Order的唯一標識 -->
  14. <id property="id" column="oid" />
  15. <result property="number" column="number" />
  16. <result property="createtime" column="createtime" />
  17. <result property="note" column="note" />
  18. </collection>
  19. </resultMap>
  20.  
  21. <!-- 一對多關聯,查詢訂單同時查詢該用戶下的訂單 -->
  22. <select id="queryUserOrder" resultMap="userOrderResultMap">
  23. SELECT
  24. u.id,
  25. u.username,
  26. u.birthday,
  27. u.sex,
  28. u.address,
  29. o.id oid,
  30. o.number,
  31. o.createtime,
  32. o.note
  33. FROM
  34. `user` u
  35. LEFT JOIN `order` o ON u.id = o.user_id
  36. </select>

測試結果

淺談resultMap的用法及關聯結果集映射

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持我們。

原文鏈接:https://blog.csdn.net/qq_42780864/article/details/81429114

延伸 · 閱讀

精彩推薦
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
主站蜘蛛池模板: 91中文字幕yellow字幕网 | 国产成人综合精品一区 | 俄罗斯美女毛茸茸bbwbbw | 日本免费的一级绿象 | 午夜影院和视费x看 | 四虎在线视频免费观看 | 高清国产在线观看 | 美女脱了内裤打开腿让你桶爽 | 青春草在线观看精品免费视频 | 91caoporm在线进入 | 性欧美xxxxx老太婆 | 亚洲成熟人网站 | 97久久免费视频 | 色99在线| 日韩成片 | 色噜噜亚洲男人的天堂www | 日韩精品一区二区三区视频 | 狠狠香蕉| 把内裤拔到一边高h1v1 | 俺去也亚洲色图 | 91香蕉国产在线观看免费永久 | 手机看片自拍 | 欧美a级完整在线观看 | 亚洲国产成人资源在线桃色 | 天天成人 | 日本护士撒尿 | 99热久久这里只有精品23 | 91视频一区 | 大又大又黄又爽免费毛片 | 成年人在线免费观看视频网站 | 日本卡1卡2卡4卡免费 | 日本连裤袜xxxxx在线视频 | 欧美高清片 | 五月香婷婷 | 成人在线观看视频免费 | 青草视频网站 | 国内久久久 | 四虎影院com | 性做久久久久久久久老女人 | caoporm国产精品视频免费 | 包臀裙女教师波多野结衣 |