mybatis支持association關聯對象和collection關聯集合對象的延遲加載,association指的是一對一,collection指的是一對多查詢
mybatis中延遲加載(lazyLoadingEnabled=true|false)的原理:
使用CGLIB創建目標對象的代理對象,調用方法時,進入攔截器方法,比如調用a.getB().getName(),攔截器invoke()方法發現a.getB()是null,就會單獨發送事先保存好的查詢關聯B對象的sql,把B查詢出來。然后調用a.setB(b),這樣a對象的b屬性就會有值了,接着完成a.getB().getName()方法的調用,這就是延遲加載的基本原理