本文共 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/