通常一個 Xml 映射文件,都會寫一個 Dao 接口與之對應, 請問,這個 Dao 接口的工作原理是什么?Dao 接口里的方法, 參數不同時,方法能重載嗎?


Dao 接口即 Mapper 接口。接口的全限名,就是映射文件中的 namespace 的值;

接口的方法名,就是映射文件中 Mapper 的 Statement 的 id 值;接口方法內的

參數,就是傳遞給 sql 的參數。

Mapper 接口是沒有實現類的,當調用接口方法時,接口全限名+方法名拼接字符

串作為 key 值,可唯一定位一個 MapperStatement。在 Mybatis 中,每一個

<select>、<insert>、<update>、<delete>標簽,都會被解析為一個

MapperStatement 對象。

37 頁 共 485 頁舉例:com.mybatis3.mappers.StudentDao.findStudentById,可以唯

一找到 namespace 為 com.mybatis3.mappers.StudentDao 下面 id 為

findStudentById 的 MapperStatement。

Mapper 接口里的方法,是不能重載的,因為是使用 全限名+方法名 的保存和尋

找策略。Mapper 接口的工作原理是 JDK 動態代理,Mybatis 運行時會使用 JDK

動態代理為 Mapper 接口生成代理對象 proxy,代理對象會攔截接口方法,轉而

執行 MapperStatement 所代表的 sql,然后將 sql 執行結果返回。


免責聲明!

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



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