Mybatis框架的连接池配置

12 篇文章 0 订阅
8 篇文章 0 订阅

啥也不说,先上代码:

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>
    <environments default="mysql_development">
        <!-- 连接环境信息 -->
        <environment id="mysql_development">
            <!-- mysql使用什么事物管理方式 -->
            <transactionManager type="JDBC">
                <property name="" value="" />
            </transactionManager>

            <!-- mybatis使用连接池方式来获取连接对象 -->
            <dataSource type="POOLED">
                <!-- 配置数据库连接信息 -->
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://your_mysql_url:3306/your_db_name?useUnicode=true&amp;characterEncoding=utf-8" />
                <property name="username" value="root" />
                <property name="password" value="your_password" />

                <property name="poolMaximumIdleConnections" value="0"/>
                <property name="poolMaximumActiveConnections" value="1000"/>
                <property name="poolPingQuery" value="SELECT 1 FROM DUAL" />  
                <property name="poolPingEnabled" value="true" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
      <package name="bean.map"/>
    </mappers>
</configuration>

说明:上面都是很显然的,有几个地方注意

  • url中useUnicode=true&amp;characterEncoding=utf-8 注意里面的转义字符&amp;也就是&,否则会出错的
  • 后面两个参数poolMaximumIdleConnections,和poolMaximumActiveConnections,需要并发控制的时候必须调整这俩参数
  • poolMaximumActiveConnections是最大的活动连接数,活动连接,就是正在与数据库交互的连接,默认是10
  • poolMaximumIdleConnections是空闲连接数,就是没有处理请求的连接,默认是5
  • 具体可以参考mybatis的源码org.apache.ibatis.datasource.pooled.PooledDataSource.

注意:

PooledDataSource就是连接池的实现类。可以看到里面定义了几个参数,其中就包括poolMaximumActiveConnectionspoolMaximumIdleConnections,找到pushConnection方法,这个方法里会判断当前空闲连接数和poolMaximumIdleConnections的大小,如果小于poolMaximumIdleConnections,会new PooledConnection并放进队列中,这就导致一个问题,当所有的连接被占满后,Mybatis为了保持一定的空闲连接,会不断获取新的连接,然后这些新连接被占用后,就会再去new PooledConnection,如果一直这样new下去,结果就会超过了mysql设置的最大连接数max_connections,然后数据库返回错误:too many connections

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

junehappylove

急急如律令,buibui~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值