简要概述一下Mybatis中的Dao接口工作原理
- Dao接口就是Mapper接口。
- 接口的全限名就是映射文件中的namespace的值
- 接口的方法名就是映射文件中的MappedStatement的id值
- 接口方法内的参数,就是传递给sql的参数。
Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement。
Dao接口的工作原理是JDK动态代理,MyBatis运行时会使用JDK动态代理为Dao接口生产代理proxy对象,代理对象会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。
在MyBatis中,每一个< select >、< insert >、< update >、< delete >标签,都会被解析成一个MappedStatement对象。