1.首先我们要知道,mybatis是如何获取数据库配置的。
通过mybtis的入门教程我们知道可以通过sqlSessionFactoryBuilder构建一个SqlSessionFactory。
2.我们再来看看 Spring-Boot中是如何给出SqlSession的。
在spring-boot中的autoconfigure中MybatisAutoConfiguration类里。
SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
最后调用的是 return factory.getObject();
点进去getObject
afterPropertiesSet();
buildSqlSessionFactory
protected SqlSessionFactory buildSqlSessionFactory() throws IOException {
Configuration configuration;
XMLConfigBuilder xmlConfigBuilder = null;
if (this.configuration != null) {
configuration = this.configuration;
if (configuration.getVariables() == null) {
configuration.setVariables(this.configurationProperties);
} else if (this.configurationProperties != null) {
configuration.getVariables().putAll(this.configurationProperties);
}
} else if (this.configLocation != null) {
xmlConfigBuilder = new XMLConfigBuilder(this.configLocation.getInputStream(), null, this.configurationProperties);
configuration = xmlConfigBuilder.getConfiguration();
} else {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Property `configuration` or 'configLocation' not specified, using default MyBatis Configuration");
}
configuration = new Configuration();
configuration.setVariables(this.configurationProperties);
}