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

1.  先看是否有空闲(idle)状态下的PooledConnection对象,如果有,就直接返回一个可用的PooledConnection对象;否则进行第2步。
3. 查看活动状态的PooledConnection池activeConnections是否已满;如果没有满,则创建一个新的PooledConnection对象,然后放到activeConnections池中,然后返回此PooledConnection对象;否则进行第三步;
4.  看最先进入activeConnections池中的PooledConnection对象是否已经过期:如果已经过期,从activeConnections池中移除此对象,然后创建一个新的PooledConnection对象,添加到activeConnections中,然后将此对象返回;否则进行第4步;
5.  线程等待,循环2步

Mybatis框架的连接池配置相关推荐

  1. mybatis开启log_mybatis使用spring-druid数据源连接池配置log4j打印sql语句以及开启监控平台...

    杂七杂的杂 作为程序员,开发工程中,一套利于测试或者监控的工具很重要,mybatis默认没有提供log4j的打印sql语句的配置. 这对于开发rest服务,提供接口的开发者而言,是在很不好做,再加上m ...

  2. SpringBoot2/SpringBoot/Java动态数据源配置、动态连接池配置、多数据源负载均衡

    Java动态数据源配置.动态连接池配置.多数据源负载均衡 大家好,今天给大家推荐一个自产的连接池插件.废话不多说,本文接口分为以下主题: 1. 插件开发背景: 2. 插件提供的能力: 3. 插件的使用 ...

  3. MyBatis复习(九):MyBatis整合C3P0连接池

    为什么引入连接池 首先我们要明白," 建立数据库连接 " 是相当消耗资源和时间的,同时,建立数据库连接的数量也是有限的(所以在初学时,才强烈要求操作完后,一定要记得关闭数据库连接, ...

  4. springboot整合mybatis 使用HikariCP连接池

    springboot整合mybatis 使用HikariCP连接池 前言 Springboot让Java开发更加美好,本节主要讲的是使用Hikari数据库连接池,如果需要使用druid连接池的请看我另 ...

  5. Spring Boot 使用 HikariCP 连接池配置详解

    Spring Boot 使用 HikariCP 连接池配置详解 HikariCP 是一个高性能的 JDBC 连接池组件. Spring Boot 2.x 将其作为默认的连接池组件,项目中添加 spri ...

  6. MyBatis进阶七:MyBatis整合C3P0连接池;

    Mybatis整合其他连接池,本篇博客以整合C3P0连接池为例. 目录 MyBatis整合C3P0连接池的步骤: (1)第一步:通过maven引入C3P0的依赖: (2)第二步:创建C3P0和Myba ...

  7. Hibernate连接池配置实例

    Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP.在Hibernate连接池配置时需要注意的有三点: 一.Apche的DBCP在Hibernate2中受支 ...

  8. 性能优化之数据库和数据源连接池配置

    什么?!数据库连接拿不到? 今天在公司对系统进行压测,由于我的sit和dev和uat环境都是用的用的是一个数据库服务器,我让用户在的sit进行压测,分别是单线程测试,并发测试,但是用户一开始测,我的三 ...

  9. Spring+Hibernate+c3p0连接池配置-连接无法释放的问题解决方案

     1.Spring+Hibernate+c3p0连接池配置: <?xml version="1.0" encoding="UTF-8"?> < ...

最新文章

  1. CDN 监控系统(二)
  2. 你真的会用storyboard开发吗?
  3. python 为什么动态语言图片_聊聊动态语言那些事(Python)
  4. HTTP 相应头相关
  5. linux mysql 挂马_linux服务器被挂马
  6. L2-014. 列车调度-PAT团体程序设计天梯赛GPLT
  7. 21世纪C语言(影印版)
  8. CoreData数据库版本迁移
  9. 汉语言文学如何利用计算机思维,计算机在应用于汉语言文学时产生的优势与局限.PDF...
  10. Win10电脑 安装 逍遥模拟器【安装步骤、使用指南、逍遥多开器、卸载“逍遥模拟器”、安装手机软件示例“学习国防”】
  11. html如何制作圣诞树,怎么用css画圣诞树?
  12. python爬虫爬取必应壁纸
  13. 實戰案例 - 資料對接工具程式碼重構 (2)
  14. java多核的利用率_java控制多核cpu的占用率
  15. ./与../和/的区别
  16. 如何设计一枚「拟态」按钮
  17. 安卓巴士Android开发神贴整理
  18. DGHV:整数上的同态加密(2)-解决噪声与构建全同态蓝图
  19. 简单五步设置群晖NAS绑定自有域名实现外网访问
  20. 大卫·波拉克(David Pollak)和迪克·沃尔(Dick Wall)讨论了采用Scala的障碍

热门文章

  1. 数据结构---多源最短路径
  2. 追债之旅(Dijkstra最短路)
  3. C. Orac and LCM(数论lcm, gcd)
  4. D. The Best Vacation(贪心+前缀和+二分)
  5. HDU - 6967 G I love data structure 线段树维护矩阵 + 细节
  6. K - Triangle 计蒜客 - 42405
  7. “Shopee杯” e起来编程暨武汉大学2020年大学生程序设计大赛决赛(重现赛)
  8. P6222-「P6156 简单题」加强版【莫比乌斯反演】
  9. Codeforces Global Round 11——E随机+线性基待补
  10. 【倍增】【线段树】雨林跳跃(luogu 7599[APIO 2021 T2])