通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, 请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法, 参数不同时,方法能重载吗?

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

接口的方法名就是映射文件中 Mapper  Statement  id 接口方法内的 

参数就是传递给 sql 的参数

Mapper 接口是没有实现类的当调用接口方法时接口全限名+方法名拼接字符 

串作为 key 可唯一定位一个 MapperStatement。 Mybatis 每一个 

<select>、<insert>、<update>、<delete>标签都会被解析为一个 

MapperStatement 对象

举例com.mybatis3.mappers.StudentDao.findStudentById可以唯 

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

findStudentById  MapperStatement。

Mapper 接口里的方法是不能重载的因为是使用 全限名+方法名 的保存和寻 

找策略。Mapper 接口的工作原理是 JDK 动态代理,Mybatis 运行时会使用 JDK

动态代理为 Mapper 接口生成代理对象 proxy,代理对象会拦截接口方法转而 

执行 MapperStatement 所代表的 sql,然后将 sql 执行结果返回

posted @ 2020-08-25 16:57  咔啡  阅读(469)  评论(0编辑  收藏  举报