MyBatis plus 源码流程
2020-03-19 18:57:10 1 举报
MyBatis plus 的源码流程
作者其他创作
大纲/内容
5.2.3 parser.parse()
3. BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MapperScannerConfigurer.class)
MybatisSqlSessionFactoryBuilder
Insert
5.2.2 mapperElement()
3. factory.getObject()
13. cachedMapperMethod()
MapperScannerConfigurer
MybatisXMLConfigBuilder
MybatisMapperRegistry
5.scanner.scan()
5.2.3 injectMappedStatement
9.1 getSqlSession()
getMapper()
SQL 语句至此才真正执行
5.2.1 parseConfiguration()
创建 SQL 会话工厂的过程就伴随着配置的解析,也会解析 XML 文件 和 Mapper 类
MapperFactoryBean 继承了抽象类 DaoSupport,从而间接继承InitializingBean接口,初始化时其 afterPropertiesSet() 方法将被调用
使用 DefaultSqlSessionFactory 去创建 SqlSessionTemplate 对象
ClassPathMapperScanner
4. afterPropertiesSet()
11. mapperProxyFactory.newInstance()
AbstractSqlInjector
MybatisMapperMethod
MybatisMapperProxyFactory
MybatisPlus 自动配置类配置 SQL 会话工厂,将 SQL 注入器等组件存入 GlobalConfig 全局配置中
@MapperScan
10. getConfiguration().getMapper()
10.2 getMapper()
8.1 checkDaoConfig()
父类实现,返回一个 SqlSessionTemplate 实例
SqlMethod 是一个枚举类,为 BaseMapper 接口中的方法提供了可动态拼接的SQL 语句
13.1 新建MybatisMapperMethod对象
2. MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean()
获取实例
14. mapperMethod.execute()
5.2 xmlConfigBuilder.parse()
getObject()
9. @Autowired 自动装配 Mapper
4.postProcessBeanDefinitionRegistry()
5.2.3 methodList.forEach(m - m.inject())
调用父类方法扫描 package
DefaultSqlSessionFactory
MybatisMapperAnnotationBuilder
6. sqlSessionTemplate()
SqlSessionTemplate
new DefaultSqlSessionFactory()
11.1 MybatisMapperProxy mapperProxy = new MybatisMapperProxy()
10.1 this.sqlSessionFactory.getConfiguration()
5.3 final SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build()
AbstractMethod
MybatisConfiguration
ClassPathBeanDefinitionScanner
7. processBeanDefinitions()
12. Mapper 实例对象方法被调用,触发代理对象invoke()
解析 Mapper 中@Select/@Insert/@Update/@Delete 注解标注的方法,取出注解中字符串,拼接 SQL语句
5.2.3 parseStatement()
5.2.3 mybatisMapperRegistry.addMapper
5.2.3 SqlMethod sqlMethod = SqlMethod.INSERT_ONE
5.2.3 configuration.addMapper()
SqlSessionDaoSupport
6.doScan()
SqlMethod
动态代理获取 Mapper 的代理 MybatisMapperProxy 对象
SqlSessionFactoryBuilder
8. afterPropertiesSet()
从配置类中获取 SQL 注入器,完成 Mapper 与 SQL 语句的映射
5.1 xmlConfigBuilder = new MybatisXMLConfigBuilder()
MapperScannerRegistrar
MapperFactoryBean
Spring 容器启动过程触发注册 bean 定义的方法,完成注册继承了 Mapper 接口的类
2. registerBeanDefinitions()
MybatisPlusAutoConfiguration
进入子类实现,以 Insert 为例
super.build()
1. sqlSessionFactory()
MybatisMapperProxy
调用父类方法,将 SQL语句等信息组装生成 MappedStatement,并添加到 Mybatis 容器
9.2 getMapper()
8.2 configuration.addMapper()
MybatisSqlSessionFactoryBean
5. buildSqlSessionFactory()
1. @Import(MapperScannerRegistrar.class)
5.2.3 this.addInsertMappedStatement()
0 条评论
下一页