一、构建SqlSessionFactory
public SqlSessionFactory build(InputStream inputStream, String environment, Properties props) {
try {
XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, props);
Configuration config = parser.parse();
return build(config);
} catch (Exception e) {
throw ExceptionFactory.wrapException("Error building SqlSession.", e);
} finally {
ErrorContext.instance().reset();
try {
inputStream.close();
} catch (IOException e) {
// Intentionally ignore. Prefer previous error.
}
}
}
XMLConfigBuilder是抽象类public abstract class BaseBuilder的实现类,抽象类和接口有啥区别呢?
二、Configuration里面有啥呢?
public Configuration() {
//支持的数据库连接之多JDBC、MANAGED、JNDI、POOLED、UNPOOLED
typeAliasRegistry.registerAlias("JDBC", JdbcTransactionFactory.class.getName());
typeAliasRegistry.registerAlias("MANAGED", ManagedTransactionFactory.class.getName());
typeAliasRegistry.registerAlias("JNDI", JndiDataSourceFactory.class.getName());
typeAliasRegistry.registerAlias("POOLED", PooledDataSourceFactory.class.getName());
typeAliasRegistry.registerAlias("UNPOOLED", UnpooledDataSourceFactory.class.getName());
备注:
JdbcTransactionFactory和ManagedTransactionFactory师出同门,都是TransactionFactory接口实现类。
JndiDataSourceFactory、PooledDataSourceFactory、UnpooledDataSourceFactory的继承关系如下图:
DataSourceFactory
-->JndiDataSourceFactory
-->UnpooledDataSourceFactory
-->PooledDataSourceFactory
-->UserDefineDataSourceFactory(这个是我自己定义的数据源)
//Cache缓存也支持PERPETUAL、FIFO、LRU、SOFT、WEAK五种,都是Cache接口的实现类,你也可以自己定义缓存接口
typeAliasRegistry.registerAlias("PERPETUAL", PerpetualCache.class.getName());
typeAliasRegistry.registerAlias("FIFO", FifoCache.class.getName());
typeAliasRegistry.registerAlias("LRU", LruCache.class.getName());
typeAliasRegistry.registerAlias("SOFT", SoftCache.class.getName());
typeAliasRegistry.registerAlias("WEAK", WeakCache.class.getName());
}
DataSourceFactory接口
TransactionFactory接口
自定义的数据源连接池是这个样子的
为了使用Druid,把Druid加入Mybatis之中
Cache接口的定义如下:
相关推荐
MyBatis的配置文件解析过程是MyBatis的核心组件之一,负责解析MyBatis的配置文件,并将其转换为 Configuration 对象。配置文件解析过程主要包括解析节点、节点、节点、节点、节点、节点等。 2.1.1 解析节点 节点...
MyBatis源码解析
Mybatis源码分析主要分三部分: 1.使用案例讲解 2.Mybatis中用的所有设计模式讲解 3.源码分析
5套完整springboot+mybatis源码下载只供学习之用,一套登录,一套权限,一套博客,一套.....
阿里巴巴P7架构师纯手工打造MyBatis源码——1小时解密底层源码.txt 需要更多往期录播资料可以联系我
阅读mybatis源码所记笔记。 基本: 1.数据源获取 2.mapper的sql语句获取 3.怎么去获得到的resultSet 重点: 1.orm是什么:体现于resultSet的数据库类型和java类型的转换 2.mybatis的一级缓存原理(简单的ifelse判断...
mybatis的源码分析视频,有详细的视频和文档。 视频地址亲测有效。失效了,请联系我。
适合学习mybatis源码的各位同学,搜集不易,多多支持
mybatis源码包mybatis源码包mybatis源码包mybatis源码包
Mybatis源码分析
给大家分享一套课程,Java架构师之源码分析专题SpringBoot2.x、Spring5、SpringMVC、Mybatis源码分析,希望对大家学习有帮助。
mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码mybatis核心源码...
mybatis中文文档和mybatis源码
刚开始学习mybatis的童鞋们注意了,查看mybatis源码,深入了解mybatis很有用哦
Spring整合Mybatis源码解析
- Mybatis源码分析 - 1. 解析配置文件,创建SQLSessionFactory - 2. 开启java程序和数据库之间的会话: - 3. 获取mapper代理对象: - 4. 执行mapper接口方法: - mybatis源码总结 <!-- /TOC --> Mybatis源码...
mybatis源码
Spring boot Mybatis源码,只是单纯的分享给有需要的人使用,俗话说的好,万事开头难,当迈开了第一步,就相当于打开了一扇门,发现了新大陆,所以我们要持之以恒,才能取得成功,让我们一起努力,为心中最美好的...