`
eric_weitm
  • 浏览: 246805 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • java
 
阅读更多

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 3.0版本的完整组件。 MyBatis-Plus的核心功能包括: 1. **自动化CRUD操作**:通过简单的配置或注解,即可实现对数据库的增删改查操作,无需编写大量重复的SQL...

    mybatis-plus 源码(mybatis-plus-3.0.zip)

    通过阅读MyBatis-Plus 3.0的源码,我们可以深入了解其实现原理,学习如何设计和优化数据库操作框架,对于提升Java开发者的数据库操作能力大有裨益。同时,对于熟悉MyBatis-Plus源码的开发者来说,也更容易排查和解决...

    mybatis-plus-3.0.rar

    - **CRUD操作**: 内置通用Mapper和通用Service,简化了常见的增删改查操作,使得开发者无需编写大量的模板代码。 - **条件构造器**: QueryWrapper和UpdateWrapper等类,方便构建动态SQL,避免了拼接SQL字符串的...

    mybatis-plus-3.0.zip

    mybatis 增强工具包,简化 CRUD 操作。...无侵入,依赖少,损耗小,通用CRUD操作,多种主键策略,支持ActiveRecord,支持代码生成,支持自定义全局通用操作,内置分页插件,内置性能分析插件,内置全局拦截插件

    RuoYi-Cloud-Plus 微服务通用权限管理系统

    Mybatis-Plus是在Mybatis基础上增强的工具,它提供了如动态SQL、CRUD接口、代码生成器等高级功能,使得开发者可以更加方便地进行数据库操作,提高开发效率。 消息队列(MQ)是系统间通信的一种重要手段,它可以解耦...

    RuoYi-Cloud-Plus 微服务通用权限管理系统 重写 RuoYi-Cloud 全方位升级(不兼容原框架)

    Mybatis-Plus作为数据持久层框架的升级,它是在Mybatis的基础上进行了封装和增强,简化了CRUD操作,并提供了一些实用的增强工具,大大提高了开发效率。 消息队列(MQ)技术的整合,使得系统在处理高并发和异步操作...

    MybatisPlus使用手册.docx

    * 强大的 CRUD 操作:MybatisPlus 内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作。 * 支持 Lambda 形式调用:MybatisPlus 通过 Lambda 表达式,方便的编写各类查询条件,无需再担心...

Global site tag (gtag.js) - Google Analytics