一、MyBatis 连接池配置(核心:mybatis-config.xml)

MyBatis 自带 3 种数据源类型:

  1. UNPOOLED:不使用连接池(每次都新建连接,性能差)
  2. POOLEDMyBatis 自带连接池(企业常用)
  3. JNDI:从服务器获取连接(极少用)

二、配置 1:MyBatis 自带连接池(POOLED)

最简单,无需额外依赖。

在 mybatis-config.xml 中配置

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        
        <!-- 配置 MyBatis 自带连接池 -->
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/数据库名?useSSL=false&amp;serverTimezone=Asia/Shanghai"/>
            <property name="username" value="root"/>
            <property name="password" value="你的密码"/>

            <!-- 连接池可选配置(优化用) -->
            <property name="poolMaximumActiveConnections" value="10"/> <!-- 最大活跃连接 -->
            <property name="poolMaximumIdleConnections" value="5"/>    <!-- 最大空闲连接 -->
        </dataSource>
    </environment>
</environments>

三、配置 2:使用第三方高性能连接池(企业标准)

强烈推荐,比 MyBatis 自带池性能好太多!

① 阿里 Druid 连接池(最常用、最稳定)

步骤 1:导入依赖 Maven

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.20</version>
</dependency>

步骤 2:编写 Druid 工厂类

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.datasource.DataSourceFactory;
import javax.sql.DataSource;
import java.util.Properties;

public class DruidDataSourceFactory implements DataSourceFactory {
    private Properties props;

    @Override
    public void setProperties(Properties props) {
        this.props = props;
    }

    @Override
    public DataSource getDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(props.getProperty("driver"));
        dataSource.setUrl(props.getProperty("url"));
        dataSource.setUsername(props.getProperty("username"));
        dataSource.setPassword(props.getProperty("password"));
        return dataSource;
    }
}

步骤 3:在 mybatis-config.xml 中使用

<dataSource type="com.xxx.DruidDataSourceFactory">
    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/数据库名?serverTimezone=Asia/Shanghai"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
</dataSource>

② SpringBoot 集成 MyBatis + Druid(最简)

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/数据库名
    username: root
    password: 123456

四、配置 3:HikariCP 连接池(SpringBoot 默认)

速度最快!

<dataSource type="com.zaxxer.hikari.HikariDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/数据库名"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
</dataSource>

五、三种连接池对比(面试必背)

连接池 性能 推荐度 特点
MyBatis 自带 POOLED 一般 ⭐⭐ 简单无需依赖
Druid ⭐⭐⭐⭐⭐ 监控、稳定、企业首选
HikariCP 极高 ⭐⭐⭐⭐ 速度最快,SpringBoot 默认

六、最核心总结

  1. 学习用:MyBatis 自带 POOLED
  2. 企业用Druid 连接池
  3. 配置都在 mybatis-config.xml<dataSource>
  4. 连接池作用:复用连接,大幅提升性能

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐