Mybatis面試題


Mybatis面試題

1、什么是Mybatis?

  1、Mybatis是一個半ORM(對象關系映射)框架,它內部封裝了JDBc,開發時只需要關注SQL語句本身,不需要花費精力去處理加載驅動、創建連接、創建statement等繁雜的過程。程序員直接編寫原生態sql,可以嚴格控制sql執行性能,靈活度高。

  2、Mybatis可以使用XML或注解來配置和映射原生信息,講POJO映射成數據庫中的記錄,避免了幾乎所有JDBC代碼和手動設置餐廚已經獲取結果集。

  3、通過XML文件或注解的方式將要執行的各種statement配置起來,並通過java對象和statement中sql的動態參數進行映射生成最終指向的sql語句,最后由Mybatis框架執行sql並將結果映射為java對象並返回。(從執行sql到返回result的過程)。

2、Mybatis的優點

  1、基於SQL語句編程,相當靈活,不會對應用程序或者數據庫的現有設計造成任何影像,SQL寫在XML里,解除sql與程序代碼的解耦,便於統一管理;提供XML標簽,支持編寫動態SQL語句,並可重用;

  2、與JDBC相比,減少了50%的代碼量,消除了JDBC大量冗余代碼,不需要手動開關連接;

  3、很好的與各種數據庫兼容(因為Mybatis使用JDBC來連接數據庫,所以只要JDBC支持的數據庫Mybatis都支持)。

  4、能夠與Spring框架很好的集成。

  5、提供映射標簽,支持對象與數據庫的ORM字段關系映射;提供對象關系映射標簽,支持對象關系組件維護。

3、Mybatis框架特點

  1、SQL語句的編寫工作量較大,尤其是字段較多、關系表多時,對開發人員編寫SQL語句的功底有一定要求。

  2、SQL語句依賴於數據庫,導致數據庫移植性差,不能隨意更換數據庫。

4、Mybatis框架使用場景

  1、Mybatis專注於SQL本身,是 一個足夠靈活的DAO層解決方案。

  2、對於性能要求很高,或者需求變化較多的項目,如互聯網項目,Mybatis將是不錯的選擇。

5、Mybatis和Hibernate有哪些不同

  1、Mybatis和Hibernate不同,它不完全是一個ORM框架,因為Mybatis需要程序員自己編寫SQL語句。

  2、Mybatis直接編寫原生態SQL,可以嚴格控制SQL的執行性能,靈活度高,非常適合對關系數據模型要求不搞的軟件開發,因為這類軟件需求變化頻繁,一旦需求變化要求迅速輸出結果。但是靈活的前提是mybatis無法做到數據庫無關性,如果需要實現支持多種數據庫的軟件,則需要自定義多套sql映射文件,工作量大。

  3、Hibernate對象/關系映射能力強,數據庫無關性好,對於關系模型要求高的軟件,如果用Hibernate開發可以節省很多代碼,提高效率。

6、#{}和${}的區別是什么

  #{}是預編譯處理,${}是字符串替換。

  Mybatis在處理#{}時,會將sql中的#{}替換為?號,調用PrepareStatement的set方法來賦值。

  Mybatis在處理${}時,就是將${}替換成變量的值。

  使用#{}可以有效的防止SQL注入,提高系統的安全性。

7、當實體類中的屬性名和表中的字段不一樣,怎么辦?

  第一種:通過在查詢的sql語句中定義字段名的別名,讓字段名的別名和實體類的屬性名一致;

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM