我们知道,JDBC操作数据库,创建Connection的开销是十分大的,而Mybatis实际上是对JDBC的封装,还是避免不了创建链接带来的大开销,不过Mybatis内部其实还是集成了自带的连接池。对于频繁创建导致的高消耗,我们的处理办法就是引入连接池机制,所谓连接池,就是我们预先创建一些连接,在使用时只需要从池子中取,而不需要自行创建,用完后归还池子即可。
我们将使用阿里开发的Druid连接池,各主流连接池的时间消耗如下(测试量为一百万次的申请归还操作):
具体步骤:
1. 导入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
2. 创建Druid连接池的工厂
package com.zt.Utils;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.datasource.pooled.PooledDataSourceFactory;
public class MyDruidDataSourceFactory extends PooledDataSourceFactory {
public MyDruidDataSourceFactory(){
this.dataSource = new DruidDataSource();
}
}
3. 修改主配置文件,替换Mybatis默认使用的链接池(由于连接池改变,连接池类中属性名(driver和url)也变了,需要相应做修改)
<dataSource type="com.zt.Utils.MyDruidDataSourceFactory">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>