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 執行結果返回。