mybatis-plus-3.0 通用crud实现原理

本文介绍MyBatis-Plus 3.0版本中通用CRUD的实现原理及流程,包括@MapperScan的处理细节,从Bean的创建到注入通用CRUD的过程,以及Mybatis如何接管mapper管理。

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

mybatis-plus-3.0 通用crud实现原理

mapper创建流程(@MapperScan 具体实现细节)

1》factory创建之后回调各个BeanFactoryPostProcessor

2》ConfigurationClassPostProcessor#processConfigBeanDefinitions 处理@Configuration注解

3》 依次处理 application(@SpringBootConfiguration)、@ComponentScan(会处理所有注入的bean)

4》 处理各个Configuration

5》 处理各种 ImportSelector 和ImportBeanDefinitionRegistrar

6》 MapperScannerRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar)解析@MapperScan,并且把每一个接口的工厂类设置为org.mybatis.spring.mapper.MapperFactoryBean

 

7》 factory 创建各个bean、设置属性、回调InitializingBean(开始注入逻辑)

8》 org.mybatis.spring.mapper.MapperFactoryBean<T>(DaoSupport).afterPropertiesSet

9> com.baomidou.mybatisplus.core.MybatisConfiguration.addMapper plus接管了mapper的管理职责

10》 MybatisMapperAnnotationBuilder.parse plus 通用的crud的注入逻辑 

a: AbstractSqlInjector.inspectInject主逻辑:

获取方法列表 getMethodList 

依次调用 inject 即injectMappedStatement(生成mybatis的动态xml脚本,注入不同的statement)

 

b: parseStatement:解析注解里的sqlSource(自定义的基于注解的动态注入)

c: parsePendingMethods: 处理还没有解析完的method

 

总结(初始化的时候注入动态代理的接口): 创建bean + 注入通用crud

app-> componentScan-> configuration->ImportBeanDefinitionRegistrar

MapperScannerRegistrar -> afterPropertiesSet->MybatisMapperAnnotationBuilder.parse

 

plus hack的类有 MybatisConfiguration、MybatisMapperRegistry、核心逻辑是MybatisMapperAnnotationBuilder.parse

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值