日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis 一对多查询 按结果嵌套处理、按查询嵌套处理,以及两者之间的区别

發布時間:2025/3/12 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis 一对多查询 按结果嵌套处理、按查询嵌套处理,以及两者之间的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mybatis 一對多查詢 按結果嵌套處理、按查詢嵌套處理

最近用到一對多查詢,記錄一下

實體類

public class RegionEntity implements Serializable {private Long rid;private String regionName;private String addrImage;private String type;private List<FloorEntity> floorEntities; } public class FloorEntity implements Serializable {private Long id;private Long rid;private String floorName; }

一個區域對應多個樓層

xml

按結果嵌套處理

把需要查詢的結果,通過sql語句實現

<select id="getRegionInfo" resultMap="regionMap">select f.id,f.floor_name,r.rid,r.region_name,r.addr_image,r.typefrom region r,floor fwhere f.rid=r.rid and r.rid=#{id}</select><resultMap id="regionMap" type="com.sf.entity.RegionEntity"><result property="rid" column="rid"/><result property="regionName" column="region_name"/><result property="addrImage" column="addr_image"/><result property="type" column="type"/><collection property="floorEntities" ofType="com.sf.entity.FloorEntity"><result property="id" column="id"/><result property="floorName" column="floor_name"/><result property="rid" column="rid"/></collection></resultMap>

按查詢嵌套處理

把sql語句分開實現,通過一對多關聯起來

<select id="getRegionInfo2" resultMap="regionMap2">select * from region where rid = #{id}</select><resultMap id="regionMap2" type="com.sf.entity.RegionEntity"><result property="rid" column="rid"/><result property="regionName" column="region_name"/><result property="addrImage" column="addr_image"/><result property="type" column="type"/><collection property="floorEntities" javaType="ArrayList" ofType="com.sf.entity.FloorEntity" select="getFloorByRid" column="rid"/></resultMap><select id="getFloorByRid" resultType="com.sf.entity.FloorEntity">select * from floor where rid = #{id}</select>

<collection property="floorEntities" javaType="ArrayList" ofType="com.sf.entity.FloorEntity" select="getFloorByRid" column="rid"/>

property值為實體類中對象的值,javaType為對應的實體類,select為多方查詢語句的命名id,column為兩表關聯id

dao層

RegionEntity getRegionInfo(Long id);

service、serviceImpl省略

controller層

@RequestMapping("/info/{rid}") public R info(@PathVariable("rid") Long rid) {RegionEntity region =regionService.getRegionInfo(rid);return region; }

瀏覽器測試
http://localhost:8089/info/26

{"rid": 26,"regionName": "401","addrImage": "default.png","deptId": 1,"type": "0","floorEntities": [{"id": 1,"rid": 26,"floorName": "一樓"}, {"id": 2,"rid": 26,"floorName": "二樓"}, {"id": 3,"rid": 26,"floorName": "三樓"}]

按結果嵌套處理、按查詢嵌套處理兩者的區別

按結果嵌套處理:若多的一方為空,則查詢結果為空
按查詢嵌套處理:若多的一方為空,依然可以輸出查詢結果,只是多的一項為null
例如:

{"rid": 27,"regionName": "402","addrImage": "default.png","deptId": 1,"type": "0","floorEntities": [] }

總結

以上是生活随笔為你收集整理的mybatis 一对多查询 按结果嵌套处理、按查询嵌套处理,以及两者之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。