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

本文详细介绍了MyBatis-Spring项目的背景及其在Spring框架中的整合方式,包括配置映射器、注册及执行流程等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.每个都搞一个,这个比较坑,可以选择忽略
2.配置路径然后全局扫描
上面那个虽然不容,但是可以告诉我们他是如何做的
二.注册
我们来看MapperScannerConfiguer,主要就是doScan

这个里面其实还是用了MapperFactoryBean


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

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值