码迷,mamicode.com
首页 > 编程语言 > 详细

mybatis-spring如何做到接口编程的

时间:2014-11-05 17:15:03      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:ibatis   spring   源码   

What is MyBatis-Spring Not Spring-Mybatis?官方介绍

        第二版那样,Spring 3.0 也仅支持 iBatis2。那么,我们就想将 MyBatis3 的支持添加 到 Spring3.0(参考 Spring Jira 中的问题)中。而不幸的是,Spring 3.0 的开发在 MyBatis 3.0 官方发布前就结束了。 因为 Spring 开发团队不想发布一个基于非发布版的 MyBatis 的整合支 持,那么 Spring 官方的支持就不得不继续等待了。要在 Spring 中支持 MyBatis,MyBatis 社 区认为现在应该是自己团结贡献者和有兴趣的人一起来开始将 Spring 的整合作为 MyBatis 社 区的子项目的时候了
一.spring 的配置
注入映射器有两种方法
1.每个都搞一个,这个比较坑,可以选择忽略
bubuko.com,布布扣
2.配置路径然后全局扫描
bubuko.com,布布扣
上面那个虽然不容,但是可以告诉我们他是如何做的
二.注册
我们来看MapperScannerConfiguer,主要就是doScan
bubuko.com,布布扣

这个里面其实还是用了MapperFactoryBean
bubuko.com,布布扣


他把每个接口,用MapperFactoryBean 生成代理之后注册到spring
而MapperFactoryBean 是如何做的呢
MapperFactoryBean.getObject()---->SqlSessionTemplate.getMapper()--->Configuration.getMapper()
-----MapperRegistry.getMapper()----->MapperProxyFactory.newInstance()
经过了几层之后总算到了代理实现类 返回了我们的接口代理类MapperProxy计算注册完成了
3.执行
执行肯定是从MapperProxy.invoke方法开始.
bubuko.com,布布扣
然后mybatis根据xml配置文件或者方法的注解,的类型,这类涉及一个十分重要的类MapperMethod
bubuko.com,布布扣

这里mybatis就根据不同的返回类型,已经配置的不同类型,执行SqlSessionTemplate不同的方法
SqlSessionTemplate 再最后调用下执行方法然后就ok了,但是这里SqlSessionInterceptor拦截这个请求,然后统一处理了下
bubuko.com,布布扣
就这样,我们的接口编程就完成


这个原理倒是很简单,只不过,当初自己只是从mybatis-spring入手,看了需求没有发现如何实现,后来断点才观察到了整个过程,
希望给大家理解下吧

mybatis-spring如何做到接口编程的

标签:ibatis   spring   源码   

原文地址:http://blog.csdn.net/qjueyue/article/details/40825479

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!