Mybatis整合其他连接池,本篇博客以整合C3P0连接池为例。

目录

MyBatis整合C3P0连接池的步骤:

(1)第一步:通过maven引入C3P0的依赖;

(2)第二步:创建C3P0和Mybatis兼容所需的数据源工厂类

(3)第三步:在mybatis-config.xml核心配置文件中设置

(4)第四步,测试


连接池

但是目前,在主流开发中,不推荐使用Mybatis自带的连接池;C3P0,Druid,DBCP等连接池都更强大;但是,Mybatis默认没有提供如C3P0直接的开发方式,我们需要对原始的Mybatis进行扩展,才能够使用C3P0这些连接池。


MyBatis整合C3P0连接池的步骤:

(关于C3P0连接池可以参考:JDBC入门十五:连接池(3):C3P0连接池入门;)

(1)第一步:通过maven引入C3P0的依赖;

(2)第二步:创建C3P0和Mybatis兼容所需的数据源工厂类

如果想让mybatis支持C3P0,需要额外扩展一个类;

package com.imooc.mybatis.datasource;import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;/*** C3P0的数据源工厂类*/
public class C3P0DataSourceFactory extends UnpooledDataSourceFactory {public C3P0DataSourceFactory(){this.dataSource = new ComboPooledDataSource();}
}

说明:

(3)第三步:在mybatis-config.xml核心配置文件中设置

和原先相比,变动如下:

主要是属性的名称都变了,因为不同的连接池对这些属性的命名要求是不同的啦,这些属性的名字不好记,需要参考相应连接池的文档(这儿是需要参考C3P0的文档)来编写。

(4)第四步,测试

随便一个测试代码:随便啦,这不是重点

package com.imooc.mybatis;import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.imooc.mybatis.dto.GoodsDTO;
import com.imooc.mybatis.entity.Goods;
import com.imooc.mybatis.entity.GoodsDetail;
import com.imooc.mybatis.entity.Student;
import com.imooc.mybatis.utils.MyBatisUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** JUnit单元测试类*/
public class MyBatisTestor {@Testpublic void testSelectPage() throws Exception {SqlSession session = null;try {session = MyBatisUtils.openSession();// PageHelper.startPage()对即将到来的下一次查询进行分页处理;// 比如下面就是第三页,每页10条数据;PageHelper.startPage(3, 10);Page<Goods> page = (Page)session.selectList("goods.selectPage");System.out.println("总页数:"+page.getPages());System.out.println("总记录数:"+page.getTotal());System.out.println("开始行号:"+page.getStartRow());System.out.println("结束行号:"+page.getEndRow());System.out.println("当前页码:"+page.getPageNum());List<Goods> data = page.getResult();  // 获取当前页数据for (Goods goods:data){System.out.println(goods.getTitle());}} catch (Exception e) {throw e;}finally {MyBatisUtils.closeSession(session);}}
}

运行结果分析:

(1)

(2)其中有条日志如下:其中的BasicResourcePool:

[main] 19:02:41:647 DEBUG c.m.v.resourcepool.BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool@14cd1699 config: [start -> 5; min -> 5; max -> 20; inc -> 3; num_acq_attempts -> 30; acq_attempt_delay -> 1000; check_idle_resources_delay -> 0; max_resource_age -> 0; max_idle_time -> 0; excess_max_idle_time -> 0; destroy_unreturned_resc_time -> 0; expiration_enforcement_delay -> 0; break_on_acquisition_failure -> false; debug_store_checkout_exceptions -> false; force_synchronous_checkins -> false]

列出了初始化时的基本配置信息:start初始数量,min最小数量,max最大数量等;这些信息都是C3P0自动给我们输出的;

(3)

MyBatis进阶七:MyBatis整合C3P0连接池;相关推荐

  1. spring 整合c3p0连接池

    个人博客:https://suveng.github.io/blog/​​​​​​​ Spring 整合C3P0连接池 注意:环境 jdk1.8 ,idea 2018,maven,spring环境 代 ...

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

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

  3. MyBatis配置C3P0连接池

    这两天学到Mybatis感觉就要疯了,第一次接触,我是不是应该写点笔记,下面呢,记录一下连接池的配置,防止忘了. 第一步,二话不说,先导入所需jar包(如图所示三个) 第二步,继承UnpooledDa ...

  4. 《深入理解Mybatis原理》 02-Mybatis数据源与连接池

    对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池. 本文首先会讲述MyB ...

  5. maven的pom.xml文件中导入c3p0连接池,在运行时报错

    maven的pom.xml文件中导入c3p0连接池运行时报错 错误内容如下: java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/imp ...

  6. c3p0连接池与dbcp连接池的区别

    c3p0连接池与dbcp连接池的区别: c3p0有自动回收空闲连接的功能: dbcp没有自动回收空闲连接的功能: c3p0提供最大空闲时间,超时则断开当前连接: dbcp提供最大连接数,超过最大连接数 ...

  7. SpringBoot整合Druid连接池

    SpringBoot整合Druid连接池 前言 第一种整合方式 自定义的方式 引入Druid依赖 配置文件 配置类 实现监控功能 开启SQL防火墙 实现web应用 访问Druid页面需登录 第二种整合 ...

  8. c3p0和jdbctemplate配置oracle集群rac,C3P0连接池、DRUID连接池和JdbcTemplate

    目录 一.C3P0连接池 1.C3P0连接池简介 2.常用的配置参数 3.C3P0连接池基本使用 (1)C3P0配置文件 (2)API介绍 4.使用步骤 二.DRUID连接池 1. DRUID简介 2 ...

  9. C3P0连接池、DRUID连接池和JdbcTemplate

    目录 一.C3P0连接池 1.C3P0连接池简介 2.常用的配置参数 3.C3P0连接池基本使用 (1)C3P0配置文件 (2)API介绍 4.使用步骤 二.DRUID连接池 1. DRUID简介 2 ...

最新文章

  1. matlab数值分析拟合实例,数值分析函数拟合matlab代码.doc
  2. 在各种xDSL技术中,能提供上下行信道非对称传输的是______。正确答案 B
  3. 连接web端,mysql,返回乱码解决
  4. windows下怎么安装protobuf for python
  5. exec和sp_executesql
  6. halcon python缺陷检测_Halcon学习笔记之缺陷检测(一)
  7. WEBSERVICE 之WSDL
  8. 继承和多态二:虚析构函数
  9. 当年要是早知道这4步框架,我就不会为数据管理发愁了
  10. SQL实战之查找所有已经分配部门的员工的last_name和first_name
  11. 关于tomcat 中的 tomcat-users.xml 配置不生效原因
  12. php的两种会话技术是,php会话技术主要包含哪些
  13. 【AD封装】插件电感,变压器(带3D)
  14. 蓝牙车库门禁卡原理及实践
  15. eNSP初学者配置以太网2种链路端口:access、trunk
  16. 计算机启动时检测硬盘,电脑总是启动检测硬盘怎么办
  17. tkinter 动态显示时间的方法
  18. LLDP链路层发现协议
  19. QPSK调制解调FPGA实现成果展示:
  20. hdmi接口线_VGA、DVI、HDMI、DP接口,您真的了解吗

热门文章

  1. 在suse下rpm包安装
  2. 实现多行显示省略号和兼容的解决办法
  3. 开发有效的工程统御能力
  4. JS完美运动框架详解——原理分析及demo
  5. Python之父表示:996是不人道的!
  6. html js 数组添加,js数组添加数据
  7. 溯源(九)之如何防止被溯源
  8. 老汉半世纪救人不留名 事迹见报引发寻恩热潮
  9. 2021年中国工业机器人供需分析:产量36.6万台[图]
  10. python scrapy是什么_python中的scrapy是什么