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語句中定義字段名的別名,讓字段名的別名和實體類的屬性名一致;