mybatis 一对多查询 按结果嵌套处理、按查询嵌套处理,以及两者之间的区别
生活随笔
收集整理的這篇文章主要介紹了
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
按結果嵌套處理、按查詢嵌套處理兩者的區別
按結果嵌套處理:若多的一方為空,則查詢結果為空
按查詢嵌套處理:若多的一方為空,依然可以輸出查詢結果,只是多的一項為null
例如:
總結
以上是生活随笔為你收集整理的mybatis 一对多查询 按结果嵌套处理、按查询嵌套处理,以及两者之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端 - token 是什么?为什么每次
- 下一篇: IoT -- (三) 2018 Top物