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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

mybatis resultmap嵌套_Java面试专题之九:Mybatis面试5个大概率被问到的问题

發布時間:2025/3/12 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis resultmap嵌套_Java面试专题之九:Mybatis面试5个大概率被问到的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、為什么說 Mybatis 是半自動 ORM 映射工具?它與全自動的區別在哪里?

Hibernate 屬于全自動 ORM 映射工具,使用 Hibernate 查詢關聯對象或者關聯集合對象時,可以根據對象關系模型直接獲取,所以它是全自動的。

而 Mybatis在查詢關聯對象或關聯集合對象時,需要手動編寫 sql 來完成,所以,稱之為半自動 ORM 映射工具。

2、 一對一、一對多的關聯查詢 ?

resultMap="ClassesResultMap">

select * from class c,teacher t where c.teacher_id=t.t_id and

c.c_id=#{id}

javaType="com.lcb.user.Teacher">

resultMap="ClassesResultMap2">

select * from class c,teacher t,student s where c.teacher_id=t.t_id

and c.c_id=s.class_id and c.c_id=#{id}

javaType="com.lcb.user.Teacher">

ofType="com.lcb.user.Student">

3、MyBatis 實現一對一有幾種方式?具體怎么操作的?

有聯合查詢和嵌套查詢,聯合查詢是幾個表聯合查詢,只查詢一次, 通過在

resultMap 里面配置 association 節點配置一對一的類就可以完成;

嵌套查詢是先查一個表,根據這個表里面的結果的 外鍵 id,去再另外一個表里面查詢數據,也是通過 association 配置,但另外一個表的查詢通過 select 屬性配置。

4、MyBatis 實現一對多有幾種方式,怎么操作的?

有聯合查詢和嵌套查詢。聯合查詢是幾個表聯合查詢,只查詢一次,通過在

resultMap 里面的 collection 節點配置一對多的類就可以完成;嵌套查詢是先查一個表,根據這個表里面的 結果的外鍵 id,去再另外一個表里面查詢數據,也是通過配置 collection,但另外一個表的查詢通過 select 節點配置。

5、Mybatis 是否支持延遲加載?如果支持,它的實現原理是什么?

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()方法的調用,這就是延遲加載的基本原理。

當然了,不光是 Mybatis,幾乎所有的包括 Hibernate,支持延遲加載的原理都是一樣的。

我是一名碼齡10年的程序員,在這里會分享實在干貨,讓你少走彎路,成就精彩人生。

總結

以上是生活随笔為你收集整理的mybatis resultmap嵌套_Java面试专题之九:Mybatis面试5个大概率被问到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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