MyBatis框架-整合Druid连接池
MyBatis作为一个ORM框架,在进行数据库操作时,是需要和数据库建立连接。MyBatis支持基于数据库连接池的连接创建方式。
当我们配置MyBatis数据源时,只要配置了dataSource标签的type属性值为POOLED时,就可以使用MyBatis内置的连接池管理连接。
如果我们想要使用第三方的数据库连接池,则需自定义配置。
1.1 常见的连接池
- DBCP:使用复杂
- C3P0:性能慢
- Druid:性能也比较好,提供了比较便捷的监控系统,支持sql拦截和解析,扩展性能好
- Hikari:性能最好
1.2 添加Druid依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.23</version>
</dependency>
1.3 替换Druid连接池
1.3.1 创建Druid连接池工厂
package com.feng.utils;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.datasource.pooled.PooledDataSourceFactory;
import javax.sql.DataSource;
/**
* @program: mybatis_project3
* @description: Druid连接池工厂
* @author: FF
* @create: 2024-12-01 13:13
**/
public class DruidDataSourceFactory extends PooledDataSourceFactory {
public DruidDataSourceFactory() {
this.dataSource = new DruidDataSource();
}
@Override
public DataSource getDataSource() {
return this.getDataSource();
}
}
1.3.2 配置MyBatis数据源
将DruidDataSourceFactory配置给MyBatis数据源
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"/>
<typeAliases>
<typeAlias type="com.feng.pojo.Members" alias="Member"/>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<!--POOLED使用Mybatis内置的连接池实现-->
<!--MyBatis需要一个连接的工厂,这个工厂可以产生数据库连接池 PooledDataSourceFactory-->
<dataSource type="com.feng.utils.DruidDataSourceFactory">
<property name="driverClass" value="${mysql_driver}"/>
<property name="jdbcUrl" value="${mysql_url}"/>
<property name="username" value="${mysql_username}"/>
<property name="password" value="${mysql_password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mappers/MemberMapper.xml"/>
</mappers>
</configuration>