Mybatis框架的连接池配置
啥也不说,先上代码:
xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
托福成绩查询时间
PUBLIC "-////DTD Config 3.0//EN"
"/dtd/mybatis-3-config.dtd">
google学术翻译>admonition<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="sql.jdbc.Driver" />
<property name="url"value="jdbc:mysql://your_mysql_url:3306/your_db_name?uUnicode=true&characterEncoding=utf-8" />
<property name="urname"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>
speak<mappers>
<package name="bean.map"/>
</mappers>
</configuration>
说明:上⾯都是很显然的,有⼏个地⽅注意
url中uUnicode=true&characterEncoding=utf-8 注意⾥⾯的转义字符&;也就是&,否则会出错的
后⾯两个参数poolMaximumIdleConnections,和poolMaximumActiveConnections,需要并发控制的时候必须调整这俩参数
poolMaximumActiveConnections是最⼤的活动连接数,活动连接,就是正在与数据库交互的连接,默认是10
poolMaximumIdleConnections是空闲连接数,就是没有处理请求的连接,默认是5谷歌英译汉在线翻译
pumpkin是什么意思具体可以参考mybatis的源码org.apache.ibatis.datasource.pooled.PooledDataSource.
注意:
PooledDataSource就是连接池的实现类。可以看到⾥⾯定义了⼏个参数,其中就包
fresh是什么意思括poolMaximumActiveConnections和poolMaximumIdleConnections,找到pushConnection⽅法,这个⽅法⾥会判断当前空闲连接数
和poolMaximumIdleConnections的⼤⼩,如果⼩于poolMaximumIdleConnections,会new PooledConnection并放进队列中,这就导致⼀个问题,当所有的连接被占满后,Mybatis为了保持⼀定的空闲连接,会不断获取新的连接,然后这些新连接被占⽤后,就会再去new PooledConnection,如果⼀直这样new下去,结果就会超过了mysql设置的最⼤连接数max_connections,然后数据库返回错误:too many connections。