https://blog.csdn.net/Lxinccode/article/details/79218566

接口工作原理:

Dao接口即Mapper接口。接口的全限名,就是映射文件中的namespace的值;接口的方法名,就是映射文件中Mapper的Statement的id值;接口方法内的参数,就是传递给sql的参数。

Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MapperStatement。在Mybatis中,每一个 <select>、<insert>、<update>、<delete>标签,都会被解析为一个MapperStatement对象。

举例来说:cn.mybatis.mappers.StudentDao.findStudentById,可以唯一找到namespace为 com.mybatis.mappers.StudentDao下面 id 为 findStudentById 的 MapperStatement。

Mapper接口里的方法,是不能重载的,因为是使用 全限名+方法名 的保存和寻找策略。Mapper 接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Mapper接口生成代理对象proxy,代理对象会拦截接口方法,转而执行MapperStatement所代表的sql,然后将sql执行结果返回。

最新文章

  1. SQL语句优化
  2. php stdclass转数组
  3. C# WPF 让你的窗口始终钉在桌面上
  4. js引出函数概念的案例
  5. ORM框架 EF - code first 的封装
  6. Maven 小结
  7. 293. Flip Game
  8. ***微信浏览器禁止app下载链接怎么办
  9. android.graphics.Matrix
  10. http请求头响应头大全
  11. mysql触发器使用注意
  12. Beginning MyBatis 3 Part 2 : How to Handle One-to-Many and One-to-One Selects
  13. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)
  14. Android时光轴
  15. Unity 脚本中各种[XXX]的用法
  16. HTML学习笔记之三(localstorage的使用)
  17. C# DataSet数据导入Excel 修正版- .net FrameWork 4.0以上
  18. 2丶利用NABCD模型进行竞争性需求分析
  19. Bat脚本实现监控进程功能
  20. Disable Oracle Automatic Jobs

热门文章

  1. c++ 运算符 循环
  2. Python学习之面向对象(一)
  3. miniui 请求遮罩mask不生效
  4. 从“int中提取高八位”开始的学习
  5. 微信小程序开发(二)----- 云开发
  6. mysql——单表查询——分组查询——示例
  7. 引用dll出现了黄色感叹号
  8. Websocket --(3)实现
  9. MySQL -3- 基础应用
  10. noip2018day1-赛道修建