spring集成mybatis的原理

本文详细探讨了Spring如何集成Mybatis,包括通过MapperScannerConfigurer扫描mapper接口,使用MapperFactoryBean生成bean,SqlSessionTemplate确保线程安全,以及Mybatis如何根据mapper找到对应的SQL。通过分析beanDefinition扩展、bean生成、方法调用和连接过程,揭示了Spring和Mybatis协同工作的核心原理。

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

spring是怎样和mybatis继承的?
在idea里点mapper.queryOne()直接跳到了接口或xml,它究竟是怎样利用jdbc执行的?
我直接调用mapper.queryOne是怎么使用的sqlsession?怎么去connect的?
mybatis是怎样根据mapper找到对应的sql语句的?
看完本文,你将茅塞顿开!

前置知识:需要了解spring和mybatis的本身的原理

对beanDefinition进行扩展(spring部分)

首先是有一个类MapperScannerConfigurer,实现了BeanDefinitionRegistryPostProcessor,并重写了postProcessBeanDefinitionRegistry方法。
spring在加载beanDefinition的时候会调用这个方法,这个方法把所有配置中mybatis的mapper包扫描一遍,修改包里每个接口的beanClass为MapperFactoryBean.class
在这里插入图片描述
一路点scan->doscan->processBeanDefinitions
在这里插入图片描述

生成bean(spring部分)

由于上一步对beanDefinition已经做了修改,而MapperFactoryBean.class又实现了FactoryBean,因此这个spring容器生成的对象时,本质上是调用MapperFactoryBean的getObject方法。getOject就是getSqlSess

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值