【知了堂学习心得】浅谈c3p0连接池和dbutils工具类的使用
1. C3P0概述
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
2. C3P0工具包下载地址
https://sourceforge.net/projects/c3p0/files/latest/download?source=files
导入jdbc和c3p0的jar包
jdbc包:mysql-connector-java-5.1.24-bin.jar
c3p0包:c3p0-0.9.5.2-sources.jar
C3p0辅助包:mchange-commons-java-0.2.11.jar
3. C3P0配置

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!--配置连接池mysql-->
<named-config name="c3p0-config">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/music_sys</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 初始化连接池时建立多少个连接 -->
<property name="initialPoolSize">5</property>
<!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 -->
<property name="maxIdleTime">60</property>
<!-- 连接池中保留的最大连接数 -->
<property name="maxPoolSize">10</property>
<!-- 连接池中保留的最小连接数 -->
<property name="minPoolSize">5</property>
<!-- 最大连接数 -->
<property name="maxStatements">20</property>
</named-config>
</c3p0-config>
4. 创建C3p0Utils工具类

5. DBUtils工具类库的使用
DBUtils包下载地址:http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi
1)导包:commons-dbutils.jar
2)核心类:QueryRunner
3)常用方法:

4)ResultSetHandler接口的实现类
单行结果: BeanHandler(), 构造器需要一个 Class 类型的参数, 用来把一行结果转换成指定类型的 javaBean 对象;
多行结果: BeanListHandler(), 构造器需要一个 Class 类型的参数, 用来把一行结果转换成一个 javaBean,若是多行结果, 就转换成 List 对象, 即多个 javaBean;
单行结果: MapHandler(), 把一行结果转换成 Map;
多行结果: MapListHandler(), 把一行记录转换成一个 Map, 若是多行, 就是多个 Map, 即 List;
单行单列: ScalarHandler(), 结果集是单行单列的, 返回一个 Object.
6.QueryRunner中的连接关闭问题
传入Connection时,需要手动关闭连接
如:操作多条SQL语句时,就必须手动获取连接和关闭连接(事务管理)
传入DataSource时,连接会自动关闭
如:操作一条SQL语句时使用
温馨提示:如需了解更多Java学习知识,请前往知了堂学习社区
www.zhiliaotang.com
【知了堂学习心得】浅谈c3p0连接池和dbutils工具类的使用的更多相关文章
- 【转】【很全很新】C3P0 连接池和 DBUtils 配合事务使用总结
[转]https://blog.csdn.net/guozhaohui628/article/details/84793028 很久没用原生连接池,最近想写个小功能,结果发现很多地方不太懂,然后网上搜 ...
- 为什么要用Jedis连接池+浅谈jedis连接池使用
为什么要使用Jedis连接池 Redis作为缓存数据库理论上和MySQL一样需要客户端和服务端建立起来连接进行相关操作,使用MySQL的时候相信大家都会使用一款开源的连接池,例如C3P0.因为直连会消 ...
- day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)
day18总结 今日思维导图: 今日内容 事务 连接池 ThreadLocal BaseServlet自定义Servlet父类(只要求会用,不要求会写) DBUtils à commons-dbuti ...
- mysql连接池的使用工具类代码示例
mysql连接池代码工具示例(scala): import java.sql.{Connection,PreparedStatement,ResultSet} import org.apache.co ...
- Mysql数据库重要知识点(知了堂学习心得)
Mysql数据库知识点 1.管理数据库语句: 使用数据库: use test; 添加数据库: create database 数据库名; create database test; 修改数据库: al ...
- C3P0连接池、DBCP连接池
C3P0连接池: 配置文件:c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c ...
- JNDI配置c3p0连接池
JNDI是什么呢? 就是java命名和文件夹接口.是SUN公司提供的一种标准的Java命名系统接口. 不好理解?简单说呢.他就是一个资源,放在tomcat里面的一个资源,今天我们就把数据库连接池放到t ...
- TensorFlow 2.0 深度学习实战 —— 浅谈卷积神经网络 CNN
前言 上一章为大家介绍过深度学习的基础和多层感知机 MLP 的应用,本章开始将深入讲解卷积神经网络的实用场景.卷积神经网络 CNN(Convolutional Neural Networks,Conv ...
- java学习笔记41(数据库连接池 C3p0连接池)
在之前的学习中,我们发现,我们需要频繁的创建连接对象,用完之后还需要在关闭资源,因为这些连接对象都是占资源的,但是又不得不创建,比较繁琐,为了解决这种情况,Java出现了数据库连接池: 数据库连接池的 ...
随机推荐
- 003Java语言环境搭建
JRE,JDK JRE(Java Runtime Environment java运行环境):包括java虚拟机和java程序所需要的核心类库, 如果要运行一个开发好的java程序,计算机中只需要安装 ...
- 【SqlServer】【问题收集】阻止保存要求重新创建表的更改
1 概述 阻止保存要求重新创建表的更改,场景是这样的:假设数据库中有一张员工表EmployeeInfo,如下所示: 其中有个字段EmployeeBirthday,在设计表时,其类型误设为VARCH ...
- 项目实战13—企业级虚拟化Virtualization-KVM技术
项目实战系列,总架构图 http://www.cnblogs.com/along21/p/8000812.html KVM的介绍.准备工作和qemu-kvm 命令详解 1.介绍 (1)介绍 KVM:就 ...
- Java快速排序算法
快速排序算法思想: 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一 ...
- ESL翻译:Linear Methods for Regression
chapter 3: Linear Methods for Regression 第3章:回归的线性方法 3.1 Introduction A linear regression model assu ...
- 当前时间、前n天、后n天、取前n条记录、从第n条开始取m条
当前时间:NOW() 前n天:DATE_SUB(NOW(),INTERVAL n DAY) 后n天:DATE_SUB(NOW(),INTERVAL -n DAY) 取前n条记录:SELECT * FR ...
- JS判断终端
//判断手机终端 if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) { window.location.href = 'mobil ...
- Java I/O---Reader & Writer(字符流)
1.Reader & Writer 当我们初次看见Reader和Writer类时,可能会以为这是两个用来替代InputStream和OutputStreamt的类,但实际上并非如此. 尽管一些 ...
- xamarin android布局
xamarin android布局练习(1) xamarin android布局练习,基础非常重要,首先要学习的就是android的布局练习,xamarin也一样,做了几个xamarin androi ...
- 理解new构造函数和apply以及call
今天在看设计模式的时候,遇到一些挺低级的东西,搞不懂,顾查阅资料整理记录一番. 先了解一下new构造函数的过程: function func(){ console.log('do'); } var f ...