vfs:虚拟文件系统,Mybatis用于加载服务器相关资源。具体作用,需要继续查看。其由一个抽象类VFS与两个实现类:JBoss6VFS与DefaultVFS,允许自定义实现(通过自定义VFS实现,解决springBoot的嵌套jar扫描问题)。
SpringBoot默认数据库连接池:早期采用tomcat的连接池,2.0后改为HikariCP(位于spring-starter-jdbc下)。现在使用SpringBoot2+时,mybatis自动连接SpringBoot的默认数据源HikariCP。相关注入,详见:org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration。其通过org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.Hikari上的@ConditionalOnMissingBean(DataSource.class)注解,实现优先级队列
工厂方法:DataSourceFactory 接口扮演工厂接口的角色。UnpooledDataSourceFactory和PooledDataSourceFactory 则扮演着具体工厂类的角色。而DataSource(Java)接口扮演产品接口的角色。UnpooledDataSource和HikariDataSource都扮演着具体产品类的角色。
MyBatis的初始化可以有两种方式:
基于XML配置文件:基于XML配置文件的方式是将MyBatis的所有配置信息放在XML文件中,MyBatis通过加载并XML配置文件,将配置文信息组装成内部的Configuration对象
基于Java API:这种方式不使用XML配置文件,需要MyBatis使用者在Java代码中,手动创建Configuration对象,然后将配置参数set 进入Configuration对象中
MyBatis和数据库的交互有两种方式:
使用传统的MyBatis提供的API:如SqlSession.selectOne(String statementId, T parameter);
使用Mapper接口
只有Mapper接口方式,才会经过MapperProxyFactory,MapperProxy,MapperMethod,最终都是调用sqlSession.xxx()
参考资料JDBC指南(W3C版)
老调重弹:JDBC系列 之 <驱动加载原理全面解析>
老调重弹:JDBC系列 之 <JDBC层次结构和基本构成>
《深入理解mybatis原理》 Mybatis初始化机制详解
面试:你知道MyBatis执行过程之初始化是如何执行的吗?
JDBC层次结构和基本构成
《深入理解mybatis原理》 MyBatis的架构设计以及实例分析
Mybatis数据源
Mybatis实现@Select等注解动态组合SQL语句
Github_HikariCP
mybatis缓存机制
SpringFramework-Core
Github_Mybatis-3
Github_Mybatis-redis-cache