发表于: 2017-10-15 23:15:06

3 892


今天学习的内容:SqlSession。

在学习Mybatis的时候,不是很明白SqlSession,百度了一下:

在使用mybatis框架时,第一步就需要产生SqlSessionFactory类的实例(相当于是产生连接池),通过调用SqlSessionFactoryBuilder类的实例的build方法来完成。下面具体对这一过程涉及的源码进行分析。

     首先用Eclipse工具查看SqlSessionFactoryBuilder类的Outline视图:

 

从上图中可以看出,SqlSessionFactoryBuilder类负责构建SqlSessionFactory,并且提供了多个build的重载方法。但其实很多都是在调同一签名的方法,例如:

 public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) ,只是由于方法参数environment和 propertiese都可以为null,

所以为了提供调用的便利性,才提供了下面的三个方法:

public SqlSessionFactory build(InputStream inputStream)

public SqlSessionFactory build(InputStream inputStream, String environment)

public SqlSessionFactory build(InputStream inputStream, Properties properties)


按照上述思路去除重复的,真正的重载方法只有如下三种:

public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) 

public SqlSessionFactory build(Reader reader, String environment, Properties properties)

public SqlSessionFactory build(Configuration config)


可以看出,配置信息可以以三种形式提供给SqlSessionFactory的build方法,分别是InputStream(字节流)、Reader(字符流)、Configuration(类),由于字节流与字符流都属于读取配置文件的方式,所以从配置信息的来源就很容易想到构建一个SqlSessionFactory有两种方式,大致代码如下:

 

(1) 读取xml文件构造方式:

String resource = "org/mybatis/example/mybatis-config.xml";   

InputStream inputStream = Resources.getResourceAsStream(resource);  

 SqlSessionFactory sqlSessionFactory = new

SqlSessionFactoryBuilder().build(inputStream) ;


(2) 编程构造方式:

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) ;

 收获:学到了关于SqlSession的内容。

  明天继续学习关于Mybatis的内容。


返回列表 返回列表
评论

    分享到