MyBatis入門【十一】resultMap小結及延遲加載

resultType:

作用:

將查詢結果按照sql列名pojo屬性名一致性映射到pojo中

場合:

常見一些明細記錄的展示,比如用戶購買商品明細,將關聯查詢信息全部展示再頁面時,此時可直接使用resultType將每一條記錄映射到pojo中,在前端頁面遍歷list(list中的是pojo)即可

resultMap:

使用association和collection完成一對一和一對多的高級映射(對查詢結果有特殊的映射要求)

  1. association:

作用:

將關聯查詢信息映射到一個pojo對象中

場合:

爲了方便查詢關聯信息可以使用association將關聯信息映射爲用戶對象中的pojo屬性中,比如:查詢訂單及關聯用戶信息
使用resultType無法將查詢結果映射到pojo對象的pojo屬性中,根據對結果集查詢遍歷的需要使用resultType還是resultMap

  1. collection:

作用:

將關聯查詢信息映射到一個list集合中

場合:

爲了方便查詢遍歷關聯信息可以使用collection將關聯信息映射到list集合中,比如:查詢用戶權限範圍模塊及模塊下的菜單,可使用collection將模塊映射到模塊list中,將菜單列表應映射到模塊對象的菜單list屬性中,這樣做的目的也是方便對查詢結果集進行遍歷查詢

如果使用resultType無法將查詢結果映射到list集合中

延遲加載

1、什麼是延遲加載

resultMap可以實現高級映射(使用association、collection實現一對一及一對多映射),association、collection具備延遲加載功能

需求:
如果查詢訂單並且關聯查詢用戶信息,如果先查詢訂單信息即可滿足要求,當我們需要查詢用戶信息時再查詢用戶信息,把對用戶信息的按需去查詢就是延遲加載

延遲加載:
先從單表中查詢,需要時再從關聯表去關聯查詢,大大提高數據庫性能,因爲查詢單表要比關聯查詢多張錶速度快

2、使用association實現延遲加載

參數說明:

select:指定延遲加載需要執行的statement的id(是根據user_id查詢用戶信息的statement)

要使用userMapper.xml中findUserById完成根據用戶id,用戶信息的查詢,如果findUserbyId不在本mapper中需要前邊加namespace

column:訂單信息中關聯用戶信息查詢的列,是user_id

<association property="user" javaType="User全路徑" select="" column="">
</association>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章