MyBatis(八) MyBatis配置数据库连接池——整合Druid

文章目录

  • 十五、配置数据库连接池-整合Druid
      • 15.1 常见的连接池
      • 15.2 添加Druid依赖
      • 15.3 将MyBatis的连接池替换为Druid

十五、配置数据库连接池-整合Druid

MyBatis作为一个ORM框架,在进行数据库操作时是需要和数据库建立连接的,MyBatis支持基于数据库连接池的连接创建方式。

当我们配置MyBatis数据源时,只要配置了dataSource标签的type属性值为POOLED时,就可以使用MyBatis内置的连接池管理连接。

如果我们想要使用第三方的数据库连接池,则需进行自定义配置。

15.1 常见的连接池

  • DBCP
  • C3P0
  • Druid 性能也比较好,提供了比较便捷的监控系统
  • Hikari 性能最好

15.2 添加Druid依赖


<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>druidartifactId>
    <version>1.2.5version>
dependency>

15.3 将MyBatis的连接池替换为Druid

在MyBatis的主配置文件中直接将type=“POOLED"改为“DruidDataSource”可以吗?不可以。

            <dataSource type="DruidDataSource">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            dataSource>

因为type=“ ” 里面需要一个连接池工厂,PooledDataSourceFactory,也就是我还是需要一个POOLED数据源,否则里面的get、put等方法没法实现。

这里相当于一个多态,我需要一个PooledDataSourceFactory,那么它作为一个父类的话,它的子类能不能往里面传?可以。

所以我们可以在utils文件夹下新建一个类DruidDataSourceFactory,让它继承PooledDataSourceFactory:

public class DruidDataSourceFactory extends PooledDataSourceFactory {
    public DruidDataSourceFactory(){
        this.dataSource = new DruidDataSource();
    }
}

它继承了PooledDataSourceFactory,而且通过构造方法将其中的dataSource改为了Druid自带的DruidDataSource。

再将DruidDataSourceFactory配置给数据源:

            <dataSource type="com.wyl.utils.DruidDataSourceFactory">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            dataSource>

当我们把配置换为Druid的配置之后,下面的配置的name就不叫driver、url…了,而是要改为Druid的:

    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC">transactionManager>
            <dataSource type="com.wyl.utils.DruidDataSourceFactory">
                <property name="driverClass" value="${driver}"/>
                <property name="jdbcUrl" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            dataSource>
        environment>
    environments>

运行一个测试类,看看日志信息,第三行实际上就是Druid打印出来的:

MyBatis(八) MyBatis配置数据库连接池——整合Druid_第1张图片

你可能感兴趣的:(MyBatis,java,mybatis,连接池,数据库)