更新時間:2023-02-17 16:15:27 來源:動力節點 瀏覽1454次
1. 模糊查詢like語句該怎么寫?
在Java代碼中添加sql通配符。
在sql語句中拼接通配符,但是會引起sql注入
2. MyBatis 框架適用場合?
MyBatis專注于SQL本身,是一個足夠靈活的DAO層解決方案。
對性能的要求很高,或者需求變化較多的項目,如互聯網項目,MyBatis將是不錯的選擇。
3. MyBatis是如何進行分頁的?分頁插件的原理是什么?
Mybatis使用RowBounds對象進行分頁,它是針對ResultSet結果集執行的內存分頁,而非物理分頁。也可以直接編寫SQL實現分頁或者使用分頁插件。
分頁插件的原理:實現MyBatis提供的接口來實現自定義插件,然后在插件的攔截方法內攔截待執行的SQL,最后重寫SQL。
4. Dao 接口里的方法,參數不同時,方法能重載嗎?
Mapper 接口里的方法,是不能重載的,因為是使用全限名+方法名的保存和尋找策略。Mapper 接口的工作原理是 JDK 動態代理,Mybatis 運行時會使用 JDK動態代理為 Mapper 接口生成代理對象 proxy,代理對象會攔截接口方法,轉而執行 MapperStatement 所代表的 sql,然后將 sql 執行結果返回。
5. MyBatis是如何將sql執行結果封裝為目標對象并返回的?都有哪些映射形式?
使用resultMap標簽,定義數據庫列名和對象屬性名之間的映射關系。
使用sql列的別名功能,將列的別名書寫為對象屬性名。
有了列名與屬性名的映射關系后,MyBatis通過反射創建對象,同時使用反射給對象的屬性逐一賦值并返回。
6. Mybaits 的優缺點?
優點:
基于SQL語句編程,相當靈活,不會對應用程序或者數據庫的現有設計造成任何影響,SQL寫在XML里,解除sql與程序代碼的耦合,便于統一管理;提供XML標簽,支持編寫動態SQL語句,并可重用。
與JDBC相比,減少了50%以上的代碼量,消除了JDBC大量冗余的代碼,不需要手動開關連接;
很好的與各種數據庫兼容,能夠與 Spring 很好的集成;
提供映射標簽,支持對象與數據庫的ORM字段關系映射;提供對象關系映射標簽,支持對象關系組件維護。
缺點:
SQL語句的編寫工作量較大,尤其當字段多、關聯表多時,對開發人員編寫SQL語句的功底有一定要求。
QL語句依賴于數據庫,導致數據庫移植性差,不能隨意更換數據庫。
7. 談談你對MyBatis的理解?
MyBatis是一個可以自定義SQL、存儲過程和高級映射的持久層框架,它內部封裝了JDBC,開發時只需要關注SQL語句本身。程序員直接編寫原生態SQL,可以嚴格控制sql執行性能,靈活度高。
8. MyBatis的Xml映射文件中,不同的Xml映射文件,id是否可以重復?
不同的Xml映射文件,如果配置了namespace,id可以重復。如果沒有配置namespace,id不能重復。原因是namespace+id是作為Map的key使用的,如果沒有namespace,id重復會導致數據互相覆蓋。有了namespace,id就可以重復,namespace不同,namespace+id自然也就不同。
9. #{}和${}的區別是什么?
#是預編譯處理,KaTeX parse error: Expected 'EOF', got '#' at position 19: …串替換。 Mybatis在處理#?時,會將sql中的#{}替換為…時,就是把$替換成變量的值。
使用#可以有效的防止SQL注入,提高系統安全性。
10. 當實體類中的屬性名和表中的字段名不一樣 ,怎么辦?
通過在查詢的sql語句中定義字段名的別名。
通過resultMap標簽來映射字段名和實體類屬性名的一一對應的關系。
以上就是“2023年比較經典的一套mybaits面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習