mysql datasource property_DataSource数据源模块

本文介绍了MyBatis的数据源模块,包括JDBC类型的事务和MANAGED类型的事务。重点讲解了数据源DataSource,它是获取数据库连接的关键。MyBatis提供了三种数据源类型:unpooled(非池型),pooled(池型)和jndi(托管型)。数据源工厂接口DataSourceFactory用于设置属性并创建DataSource实例,以提供数据库连接。
摘要由CSDN通过智能技术生成

事务模块分为两类:JDBC类型和MANAGED类型,前者多用于单独使用MyBatis框架的情况下(比如测试学习MyBatis功能),后者则表示托管于其他框架,比如Spring来完成事务功能。

这一回我们来看看环境设置中的另一项内容:数据源DataSource。

(其实应该先解读DataSource,在解读Transaction的,但是...失误啊...)

2、数据源模块

数据源模块位于org.apache.ibatis.datasource包下,其架构结构为:

org.apache.ibatis.datasource

----org.apache.ibatis.datasource.jndi

--------JndiDataSourceFactory.java

----org.apache.ibatis.datasource.pooled

--------PooledConnection.java

--------PooledDataSource.java

--------PooledDataSourceFactory.java

--------PoolState.java

----org.apache.ibatis.datasource.unpooled

--------UnpooledDataSource.java

--------UnpooledDataSourceFactory.java

----DataSourceException.java

----DataSourceFactory.java

和事务模块类似,数据源模块同样采用了工厂模式。

2.1 数据源接口

org.apache.ibatis.datasource包下的DataSourceFactory是数据源工厂接口,至于数据源接口沿用JDK中给出的javax.sql包下的数据源接口DataSource,下面给出JDK中DataSource接口的源码:

1 package javax.sql;

2 import java.sql.Connection;

3 import java.sql.SQLException;

4 import java.sql.Wrapper;

5 public interface DataSource  extends CommonDataSource,Wrapper {

6   Connection getConnection() throws SQLException;

7   Connection getConnection(String username, String password)

8     throws SQLException;

9 }

从源码中可以看出,在数据源接口中定义了两个获取数据库连接Connection的方法,可见数据源的目的所在,不论其使用什么原理实现,其目的就是为了对外提供数据库连接的获取接口。我们千方百计创建数据源实例,就是为外方通过getConnection()方法来获取数据库连接做基础准备工作。下面看数据源工厂接口源码:

数据源工厂接口源码:

1 package org.apache.ibatis.datasource;

2 import java.util.Properties;

3 import javax.sql.DataSource;

4 /**

5  * 数据源工厂

6  * 有三种内建的数据源类型 UNPOOLED POOLED JNDI

7  */

8 public interface DataSourceFactory {

9   //设置属性,被XMLConfigBuilder所调用

10   void setProperties(Properties props);

11   //生产数据源,直接得到javax.sql.DataSource

12   DataSource getDataSource();

13 }

数据源工厂接口中定义了两个方法,一个是设置属性的方法,与事务模型中的设置属性方法类似,也是需要在构建Configuration配置类时由XMLConfigBuilder来进行调用的,调用的目的是为了将配置文件中配置的数据源属性信息填充到DataSource中(然后在填充到Environment中,在填充到Configuration中,这是后话)。

这些Properties属性配置正是第二节列举过的Configuration配置文件中的一部分:

1

2    

3    

4    

5    

6

这一段配置内容中标签表明这是数据源的配置信息,type属性表示这个数据源是POOLED(池型)类型的数据源,然后在其内部设置property子标签用于指定数据源的具体信息:驱动器、数据库URL、用户名、密码四项内容。

另一个方法是DataSource实例的生产方法,这也是工厂的主要作用:用来生产对应类的实例。

这里插播一条信息:Connection与DataSource的关系,Connection(连接)是包含在DataSource(数据源)之内的,我们可以通过DataSource来得到其中的Connection,反之不可能,所以我们需要先创建DataSource实例,以此来获取Connection数据库连接,所有DataSource是基础,Connection是目的。

2.2 Mybatis数据源类型

MyBatis为我们提供了三种具体的数据源类型:

unpooled:非池型数据源

pooled:池型数据源

jndi:托管型

MyBatis提供的三种数据源类型各有作用,其中非池型数据源是作为基础存在的,一般也不会直接使用,常用的时池型数据源,而池型数据源是以非池型数据源为基础的,第三种托管型数据源的意思就是采用外部的数据源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值