MyBatis进阶七:MyBatis整合C3P0连接池;
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连接池;相关推荐
- spring 整合c3p0连接池
个人博客:https://suveng.github.io/blog/ Spring 整合C3P0连接池 注意:环境 jdk1.8 ,idea 2018,maven,spring环境 代 ...
- MyBatis复习(九):MyBatis整合C3P0连接池
为什么引入连接池 首先我们要明白," 建立数据库连接 " 是相当消耗资源和时间的,同时,建立数据库连接的数量也是有限的(所以在初学时,才强烈要求操作完后,一定要记得关闭数据库连接, ...
- MyBatis配置C3P0连接池
这两天学到Mybatis感觉就要疯了,第一次接触,我是不是应该写点笔记,下面呢,记录一下连接池的配置,防止忘了. 第一步,二话不说,先导入所需jar包(如图所示三个) 第二步,继承UnpooledDa ...
- 《深入理解Mybatis原理》 02-Mybatis数据源与连接池
对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池. 本文首先会讲述MyB ...
- maven的pom.xml文件中导入c3p0连接池,在运行时报错
maven的pom.xml文件中导入c3p0连接池运行时报错 错误内容如下: java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/imp ...
- c3p0连接池与dbcp连接池的区别
c3p0连接池与dbcp连接池的区别: c3p0有自动回收空闲连接的功能: dbcp没有自动回收空闲连接的功能: c3p0提供最大空闲时间,超时则断开当前连接: dbcp提供最大连接数,超过最大连接数 ...
- SpringBoot整合Druid连接池
SpringBoot整合Druid连接池 前言 第一种整合方式 自定义的方式 引入Druid依赖 配置文件 配置类 实现监控功能 开启SQL防火墙 实现web应用 访问Druid页面需登录 第二种整合 ...
- c3p0和jdbctemplate配置oracle集群rac,C3P0连接池、DRUID连接池和JdbcTemplate
目录 一.C3P0连接池 1.C3P0连接池简介 2.常用的配置参数 3.C3P0连接池基本使用 (1)C3P0配置文件 (2)API介绍 4.使用步骤 二.DRUID连接池 1. DRUID简介 2 ...
- C3P0连接池、DRUID连接池和JdbcTemplate
目录 一.C3P0连接池 1.C3P0连接池简介 2.常用的配置参数 3.C3P0连接池基本使用 (1)C3P0配置文件 (2)API介绍 4.使用步骤 二.DRUID连接池 1. DRUID简介 2 ...
最新文章
- matlab数值分析拟合实例,数值分析函数拟合matlab代码.doc
- 在各种xDSL技术中,能提供上下行信道非对称传输的是______。正确答案 B
- 连接web端,mysql,返回乱码解决
- windows下怎么安装protobuf for python
- exec和sp_executesql
- halcon python缺陷检测_Halcon学习笔记之缺陷检测(一)
- WEBSERVICE 之WSDL
- 继承和多态二:虚析构函数
- 当年要是早知道这4步框架,我就不会为数据管理发愁了
- SQL实战之查找所有已经分配部门的员工的last_name和first_name
- 关于tomcat 中的 tomcat-users.xml 配置不生效原因
- php的两种会话技术是,php会话技术主要包含哪些
- 【AD封装】插件电感,变压器(带3D)
- 蓝牙车库门禁卡原理及实践
- eNSP初学者配置以太网2种链路端口:access、trunk
- 计算机启动时检测硬盘,电脑总是启动检测硬盘怎么办
- tkinter 动态显示时间的方法
- LLDP链路层发现协议
- QPSK调制解调FPGA实现成果展示:
- hdmi接口线_VGA、DVI、HDMI、DP接口,您真的了解吗