博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis 源码学习(五) DataSource
阅读量:4217 次
发布时间:2019-05-26

本文共 1059 字,大约阅读时间需要 3 分钟。

作为一个ORM框架对jdbc的封装是基础和前提。

假设要自己写一个ORM框架,首先也是从jdbc入手。或者说从创建数据库链接开始。

跟我想的不太一样,获取数据库链接没有在jdbc包里,而是在datasource包里。

javax.sql.DataSource。早有标准接口。

从代码可以看到mybatis实现了三种datasource,jndi、pooled、unpooled。datasource是个典型的工厂模式。

1.有工厂类接口 DataSourceFactory

/** * @author Clinton Begin */public interface DataSourceFactory {  void setProperties(Properties props);  DataSource getDataSource();}

2.三个工厂类子类 UnpooledDatasourceFactory PooleDataSourceFactory JndiDataSourceFactory 

在是用的时候,根据配置文件中的dataSource的type来决定使用那种dataSource。

private DataSourceFactory dataSourceElement(XNode context) throws Exception {    if (context != null) {      String type = context.getStringAttribute("type");      Properties props = context.getChildrenAsProperties();      DataSourceFactory factory = (DataSourceFactory) resolveClass(type).newInstance();//如何把字符串对应具体的类呢?      factory.setProperties(props);      return factory;    }

昨天想找如果把type的字符串对应成类的。

找到了TypeAliasRegistry类,初始化的时候注册了很多类型,但是没有数据源类型。

今天发现BaseBuilder中的typeAliasRegistry是从configuration中获取的。然后发现在Configuration初始化的时候注册了一些系统用的别名。数据源类型就是这时候被注册的。

转载地址:http://ihnmi.baihongyu.com/

你可能感兴趣的文章
android应用上传至各应用平台(1)
查看>>
Android应用上传至各应用平台(2)
查看>>
eclipse中修改包名 Android应用上线包冲突问题
查看>>
android 消息接受传送与线程的启动
查看>>
android 欢迎界面的实现在一个activity中
查看>>
android menu 使用总结1
查看>>
C++结构体与链表总结
查看>>
c,c++宏
查看>>
c++中的枚举类型
查看>>
c++ 运算符重载
查看>>
android使用已安装程序实现分享功能
查看>>
android实现截图功能
查看>>
android 网络连接状态判断与数据类型
查看>>
android webview 实现网页加载进度
查看>>
《人性的弱点》
查看>>
《大师们是如何工作的》
查看>>
c++ 中的多重继承和其权限问题
查看>>
那些年
查看>>
android listview 图文并茂
查看>>
c++中的拷贝构造函数
查看>>