Mybatis的几大对象?它们之间的关系?
-
DefaultSqlSessionFactory 创建sqlSession的类
- configuration 数据库配置信息
-
MybatisConfigConfiguration 数据库配置信息
- mybatisMapperRegistry
- knownMappers 已加载的mapper文件(.xml与.java)
- globalConfig
- dbConfig
- dbType 数据库类型
- sqlInjector sql注入器,单表数据库的CURD就是靠它生成的
- superMapperClass 最顶级的mapper反射类
- sqlSessionFactory 封装了configuration
- dbConfig
- environment
- dataSource 读取的数据源
- transactionFactory 事务工厂,负责管理事务
- interceptorChain 拦截器链
- mappedStatements key是方法名,value是MappedStatement对象
- resource 方法所在路径(com/entity/huxin/TreeMapper.java)
- id 路径名+方法名(com.entity.huxin.TreeMapper.select)
- statementType 语句类型,默认为PREPARED
- sqlSource 数据源类型
- sqlCommandType CURD中的一种
- keyGenerator 主键生成器类型,对应IdType
- keyProperties,keyColumns 主键字段与主键数据库字段
- resultMaps 返回结果映射
- loadedResources 记录.xml文件位置与mapper.java位置
- mybatisMapperRegistry
-
SqlSessionTemplate
- sqlSessionFactory记录着数据库的连接配置
- executorType是执行器类型
- sqlSessionProxy是sqlSession的代理
- exceptionTranslator记载数据源信息
-
DefaultSqlSession 实际调用的是它下面executor的CURD方法
- configuration
- executor 执行器,如果是动态代理的话返回Plugin类,根据不同的插件返回不同的interceptor
-
Plugin 插件类
- target 代理的执行器类
- interceptor 最终的拦截器
- signatureMap key是拦截器接口反射类,value是拦截的方法
-
TypeHandlerRegistry 主要是数据库中的字段类型与Java中的对象类型的映射