mybatis中xml文件中方法不可以重载---你知道吗?
下文笔者讲述mybatis中mapper的xml文件原理说明
Mapper接口的工作原理:
采用JDK动态代理
Mybatis运行时会使用JDK动态代理为Mapper接口生成代理对象proxy
代理对象会拦截接口方法
使用类的全限定名+方法名
唯一定位到一个MapperStatement并调用执行器执行所代表的sql
然后将sql执行结果返回
从上述的运行原理,我们可以Mapper接口中的方法不能重载
因为拦截方法时,并没有检测方法参数
注意事项:
1.Dao接口就是我们通常说的Mapper接口
接口的全限名
就是映射文件中的namespace的值
接口的方法名
就是映射文件中Mapper的Statement的id值
接口方法内的参数
就是传递给sql的参数
2.调用接口方法时,只需使用全限名+方法名拼接字符串作为key值
然后定位到MapperStatement
3.在Mybatis中
每一个SQL标签
如<select>、<insert>、<update>、<delete>标签
都会被解析为一个MapperStatement对象
例:
com.mybatis3.mappers.UserDao.findUserById
可以唯一找到namespace为com.mybatis3.mappers.UserDao
下 id 为 findUserById 的 MapperStatement
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


