mybatis面試總結(1)——介紹mybatis
阿新 • • 發佈:2019-01-24
如果面試官直接讓我介紹mybatis,我將從以下幾個方面去介紹這個框架:
1.mybatis是什麼?
mybatis是一個優秀的持久層框架,他對jdbc操作資料庫的過程進行了封裝,使開發著只用關注sql本身,不用去關注例如註冊驅動,載入連結,得到statement,處理結果集等複雜的過程。
mybatis通過xml或者註解的方式,將要執行的各種sql語句配置起來,並通過Java物件和statement中的sql語句對映生成最終的sql語句,最後由mybatis框架執行sql語句,並將結果對映成Java物件返回。
2.工作原理
mybatis通過配置檔案建立sqlsessionFactory,sqlsessionFactory根據配置檔案,配置檔案來源於兩個方面:一個是xml,一個是Java中的註解,獲取sqlSession。SQLSession包含了執行sql語句的所有方法,可以通過SQLSession直接執行對映的sql語句,完成對資料的增刪改查和事物的提交工作,用完之後關閉SQLSession。
3.工作的流程
mapper介面:
介面的全類名是xml檔案中namespace的值。
- 介面中的方法名是xml檔案中mapperstatement的id值。
- 介面中方法的引數就是傳遞給sql的引數
- mapper介面是沒有實現類的,當呼叫一個方法時,介面的全類名定位一個配置檔案,介面的方法名定位這個配置檔案中的一個mapperStatment,所以說mapper的方法名是不能過載的,因為mapperStatment的儲存和尋找策略。
- mapper介面的工作原理是,mybatis會使用jdk動態代理方式為mapper介面建立proxy物件,代理物件會攔截介面中的方法,轉而執行mapperStatment所代表的sql語句,然後將執行的結果封裝返回。
4.mybatis解決的問題
- 1.使用資料庫連線池管理連結,避免了頻繁建立了、關閉連結,浪費資源,影響效能的問題。
- 2.用xml管理sql語句,讓Java程式碼和sql語句分離,使得程式碼更易維護。
- 3.解決了sql語句引數不定的問題。xml中可以通過where條件決定sql語句的條件引數。mybatis將Java物件對映到sql語句,通過statement的parameterType定義輸入引數的型別。
- 4.mybatis自動將結果集封裝成Java物件, 通過statement的resultType定義輸出的型別。避免了因sql變化,對結果集處理麻煩的問題。