java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > MyBatis 自带连接池

MyBatis 自带连接池的具体实现

作者:这孩子叫逆

MyBatis自带的PooledDataSource实现了一个简单的数据库连接池,适合简单场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

MyBatis 本身并不提供专门的连接池实现,但它可以通过内置的 PooledDataSource 类提供一个简单的数据库连接池。这个连接池实现非常基础,适合一些简单场景,但对于生产环境,通常建议使用第三方的成熟连接池,如 HikariCP、Apache DBCP 或 C3P0 等。

1. MyBatis 自带的连接池 PooledDataSource

PooledDataSource 是 MyBatis 提供的一个简单的数据库连接池实现。它将数据库连接保存在池中,避免频繁创建和销毁连接,从而提高性能。PooledDataSource 基于传统的对象池思想设计,包含了最基本的连接池功能。

1.1 PooledDataSource 的基本工作原理

1.2 PooledDataSource 的配置参数

你可以在 MyBatis 的配置文件中配置 PooledDataSource。以下是常用的配置参数:

1.3 示例配置

以下是使用 PooledDataSource 的 MyBatis 配置文件示例:

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
                <property name="poolMaximumActiveConnections" value="20"/>
                <property name="poolMaximumIdleConnections" value="10"/>
                <property name="poolMaximumCheckoutTime" value="30000"/>
                <property name="poolTimeToWait" value="30000"/>
                <property name="poolPingQuery" value="SELECT 1"/>
                <property name="poolPingEnabled" value="true"/>
                <property name="poolPingConnectionsNotUsedFor" value="60000"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

在这个配置中,PooledDataSource 配置了 MySQL 数据库连接池,最多允许 20 个连接同时活跃,10 个空闲连接,并且配置了连接有效性检测。

1.4 使用 PooledDataSource 的局限性

虽然 PooledDataSource 可以满足一些基本的连接池需求,但它的功能和性能相对较为简单,可能不适合复杂的生产环境。以下是一些局限性:

2. 生产环境推荐使用的连接池

在生产环境中,建议使用性能更好、功能更强大的连接池实现,如:

3. 切换到第三方连接池

如果要切换到第三方连接池,MyBatis 只需要更改配置即可。以 HikariCP 为例:

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="com.zaxxer.hikari.HikariDataSource">
                <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
                <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
                <property name="maximumPoolSize" value="20"/>
                <property name="minimumIdle" value="10"/>
                <property name="idleTimeout" value="600000"/>
                <property name="connectionTimeout" value="30000"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

总结

到此这篇关于MyBatis 自带连接池的具体实现的文章就介绍到这了,更多相关MyBatis 自带连接池内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文