懶加載

①、啓動懶加載,mybatis初始化返回類型的時候,會返回一個cglib代理對象,該對象的關聯對象(例如一對多,多對一)相關信息就會在loadpair裏邊,而且添加到loadmap中,cglib對象會過濾get,set ,is,"equals", "clone", "hashCode", "toString"觸發方法,而後纔會調用loadpair來加載關聯對象的值。因此咱們必須在進行懶加載的時候必需要導入相應的jar包,否則會報錯。mybatis

  

 

   ②、其實經過上面的例子,咱們很好理解懶加載的原理,就是按需加載。咱們須要什麼信息的時候再去查。而不是一次性查詢全部的。將複雜的關聯查詢分解成單表查詢,而後經過單表查詢的結果去關聯查詢。app

    那麼不用mybatis的懶加載咱們也但是實現上面的例子:代理

    1、定義兩個mapper方法xml

      一、查詢訂單列表對象

      二、根據用戶 id 查詢用戶信息blog

    2、先去查詢第一個mapper方法,獲取訂單信息列表,而後放入到一個集合中get

    3、若是須要用戶信息,那麼在程序中,咱們能夠遍歷訂單信息,獲得用戶id,而後經過id去查詢用戶信息。hash

    這與mybatis懶加載的區別就是,mybatis是在mapper.xml文件中配置好關聯關係了,咱們直接調用就行了。而本身實現的原理就是手動去創建關聯關係。原理

相關文章
相關標籤/搜索