连接池技术
在Mybatis中它采用的是自己的连接池技术。在Mybatis的 SqlMapConfig.xml 配置文件中,通过来实现Mybatis中连接池的配置。
Mybatis将它自己的数据源分为三类:
-
UNPOOLED:不使用连接池的数据源
-
POOLED:使用连接池的数据源
-
JNDI:使用 JNDI 实现的数据源
相应地,MyBatis内部分别定义了实现了java.sql.DataSource接口的UnpooledDataSource,PooledDataSource类来表示UNPOOLED、POOLED类型的数据源。
在这三种数据源中,我们一般采用的是POOLED数据源(很多时候我们所说的数据源就是为了更好的管理数据库连接,也就是我们所说的连接池技术)。
数据源的配置
我们的数据源配置就是在 SqlMapConfig.xml 文件中,具体配置如下:
<!-- 配置数据源(连接池)信息 -->
<dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
MyBatis在初始化时,根据dataSource
的type属性来创建相应类型的的数据源DataSource,即:
-
type=”POOLED”
:MyBatis 会创建PooledDataSource实例。 -
type=”UNPOOLED”
: MyBatis 会创建UnpooledDataSource实例。 -
type=”JNDI”
:MyBatis 会从JNDI服务上查找DataSource实例,然后返回使用。
整合Druid
当我们配置MyBatis数据源时,只要配置了dataSource标签的type属性值为POOLED时,就可以使用MyBatis内置的连接池管理连接。
如果我们想要使用第三方的数据库连接池,则需进行自定义配置。
第三方的数据库连接池,常用的是Druid。Druid性能也比较好,提供了比较便捷的监控系统。Hikari性能最好。
1、pom文件添加依赖。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.5</version>
</dependency>
2、创建Druid连接池工厂
public class DruidDataSourceFactory extends PooledDataSourceFactory {
public DruidDataSourceFactory(){
this.dataSource = new DruidDataSource();
}
}
3、将DruidDataSourceFactory配置给Mybatis数据源。
<environments default= "mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<!-- POOLED 使用MyBatis内置的连接池实现 -->
<!-- mybatis需要一个连接池工厂,这个工厂可以产生数据库连接池 PooledDataSourceFactory -->
<dataSource type="com.coydone.utils.DruidDataSourceFactory">
<property name="driverClass" value="${driver}" />
<property name=" jdbcUrl" value="${url}"/>
<property name="username" value="S{username}" />
<property name="password" value="$ipassword}" />
</dataSource>
</environment>
</environments>
评论区