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
相关推荐
在本压缩包"mybatis-plus-3.0"中,包含了MyBatis-Plus 3.0版本的完整组件。 MyBatis-Plus的核心功能包括: 1. **自动化CRUD操作**:通过简单的配置或注解,即可实现对数据库的增删改查操作,无需编写大量重复的SQL...
通过阅读MyBatis-Plus 3.0的源码,我们可以深入了解其实现原理,学习如何设计和优化数据库操作框架,对于提升Java开发者的数据库操作能力大有裨益。同时,对于熟悉MyBatis-Plus源码的开发者来说,也更容易排查和解决...
- **CRUD操作**: 内置通用Mapper和通用Service,简化了常见的增删改查操作,使得开发者无需编写大量的模板代码。 - **条件构造器**: QueryWrapper和UpdateWrapper等类,方便构建动态SQL,避免了拼接SQL字符串的...
mybatis 增强工具包,简化 CRUD 操作。...无侵入,依赖少,损耗小,通用CRUD操作,多种主键策略,支持ActiveRecord,支持代码生成,支持自定义全局通用操作,内置分页插件,内置性能分析插件,内置全局拦截插件
Mybatis-Plus是在Mybatis基础上增强的工具,它提供了如动态SQL、CRUD接口、代码生成器等高级功能,使得开发者可以更加方便地进行数据库操作,提高开发效率。 消息队列(MQ)是系统间通信的一种重要手段,它可以解耦...
Mybatis-Plus作为数据持久层框架的升级,它是在Mybatis的基础上进行了封装和增强,简化了CRUD操作,并提供了一些实用的增强工具,大大提高了开发效率。 消息队列(MQ)技术的整合,使得系统在处理高并发和异步操作...
* 强大的 CRUD 操作:MybatisPlus 内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作。 * 支持 Lambda 形式调用:MybatisPlus 通过 Lambda 表达式,方便的编写各类查询条件,无需再担心...