mybatis3源码研究-构建SqlSessionFactory(二)
来源:互联网 发布:淘宝买水果坏了怎么办 编辑:程序博客网 时间:2024/05/17 04:41
上一篇研究了通过配置文件来构建SqlSessionFactory,本篇将看一下如何通过java程序来构建SqlSessionFactory。
在指南中也给我们提供了相应的方法,如下:
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new
JdbcTransactionFactory();
Environment environment =
new Environment(“development”, transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(configuration);
我们来看一下这段代码,结合上篇代码分析,我们知道构建 SqlSessionFactory的核心代码是 SqlSessionFactoryBuilder().build(configuration);
也就是我们只需要一个configuration即可,既然只需要一个configuration,那么我们的配置信息就需要全部加载到这个对象中。
而我们的配置文件主要有,这两对标签;通过上篇的分析我们可以知道environments 最终解析到了configuration的environment属性中,而mappers最终也是调用的configuration.addMapper方法。
而Configuration中恰好有这么一个构造方法:
public Configuration(Environment environment) {
this();
this.environment = environment;
}
而Environment的构造方法又是如下
public Environment(String id, TransactionFactory transactionFactory, DataSource dataSource){
…………
}
这样所有的信息就都加载到系统中了。
分析这两种构建方法,很容易发现,二者其实是殊途同归,无外乎就是将配置加载到configuration中,然后再通过SqlSessionFactoryBuilder().build(configuration)方法构建一个SqlSessionFactory的实现类
- mybatis3源码研究-构建SqlSessionFactory(二)
- mybatis3源码研究-构建SqlSessionFactory(一)
- mybatis源码解析(二)生成SqlSessionFactory
- SqlSessionFactory(二)
- MyBatis3 通用CRUD的研究[二]
- mybatis3通用crud的研究二
- Mybatis源码分析(二)- SqlSessionFactory和SqlSession详解
- 在XML中构建SqlSessionFactory
- distcc源码研究二
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- myBatis源码学习之SqlSessionFactory
- 线索二叉树详解以及代码实现
- 2015-10-30-Android手机屏幕相关知识点
- 杭电1047 An Easy Task - java 解读
- 密码学:C/C++语言实现(原书第2版)——互动出版网
- 百度地图手机端单触点单击和长按事件,解决部分手机(小米手机)地图单击事件失效,多触点、拖动依然触发长按的bug
- mybatis3源码研究-构建SqlSessionFactory(二)
- 解决std::addressof找不到及eclipse lunna+cdt 8.6.0 支持 c++11的设置
- Dubbo zookeeper 初探
- iOS提交新版本报错error itms-90049
- POJ 2676 Sudoku (DFS)
- 网页宽高自适应大小
- VVDocumenter-Xcode
- Mac 自带ftp命令
- 算法学习(6)分治策略(期望线性时间选择)