Java学习笔记50(DBCP连接池)
实际开发中,连接数据库是十分消耗资源的操作,但是,我们又需要频繁地连接数据库
这时候,为了提高效率,这里就会采用连接池技术:
连接池地通俗理解:
一个池里面放入很多的连接,需要哪一个取出来用即可,用完放回去,而不是关闭连接
这里使用到四个jar包
commons-dbcp-1.4.jar
commons-pool-1.5.6.jar
mysql-connector-java-5.1.37-bin.jar
commons-dbutils-1.6.jar
DataSource接口:连接池的规范接口
BasicDataSource类:导入的jar包中的实现类
连接池连接数据库的方法与配置:
package demo; import java.sql.Connection;
import java.sql.SQLException; import org.apache.commons.dbcp.BasicDataSource; public class DataSourceDemo {
public static void main(String[] args) {
BasicDataSource dataSource = new BasicDataSource();
// 常规基本配置
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mybase");
dataSource.setUsername("root");
dataSource.setPassword("xuyiqing");
// 连接池配置
dataSource.setMaxActive(10);// 最大连接数
dataSource.setMaxIdle(5);// 最大空闲连接
dataSource.setMinIdle(2);// 最小空闲连接
dataSource.setInitialSize(5);// 初始化连接
try {
Connection con = dataSource.getConnection();
} catch (SQLException ex) {
ex.printStackTrace();
throw new RuntimeException("数据库连接失败");
}
}
}
接下来创建一个连接池的工具类,用于方便开发:
数据准备:创建表:
CREATE TABLE sort(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(100),
sprice DOUBLE,
sdesc VARCHAR(5000)
);
工具类:
package demo; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; public class JDBCUtils {
private static BasicDataSource dataSource = new BasicDataSource(); static {
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mybase");
dataSource.setUsername("root");
dataSource.setPassword("xuyiqing");
dataSource.setInitialSize(10);
dataSource.setMaxActive(8);
dataSource.setMaxIdle(5);
dataSource.setMinIdle(1);
} public static DataSource getDataSource() {
return dataSource;
}
}
测试:
package demo; import java.sql.SQLException;
import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler; public class QueryRunnerDemo {
private static QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); public static void main(String[] args) {
insert();
} public static void insert() {
String sql = "INSERT INTO sort (sname,sprice,sdesc)VALUES(?,?,?)";
Object[] params = { "水果", 20, "促销" };
try {
qr.update(sql, params);
} catch (SQLException ex) {
throw new RuntimeException("数据添加失败");
}
} public static void select() {
String sql = "SELECT * FROM sort";
try {
List<Object[]> list = qr.query(sql, new ArrayListHandler());
for (Object[] objs : list) {
for (Object obj : objs) {
System.out.println(obj + "\t");
}
}
} catch (SQLException ex) {
throw new RuntimeException("数据添加失败");
}
}
}
Java学习笔记50(DBCP连接池)的更多相关文章
- 【JAVAWEB学习笔记】10_JDBC连接池&DBUtils
使用连接池改造JDBC的工具类: 1.1.1 需求: 传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序. * 在程序开始的 ...
- java学习笔记41(数据库连接池 C3p0连接池)
在之前的学习中,我们发现,我们需要频繁的创建连接对象,用完之后还需要在关闭资源,因为这些连接对象都是占资源的,但是又不得不创建,比较繁琐,为了解决这种情况,Java出现了数据库连接池: 数据库连接池的 ...
- Java学习笔记42(数据库连接池 druid连接池)
druid连接池: 是阿里的连接池,druid的稳定性及效率都很高,目前用的比较广,所以建议开发过程中尽量用druid连接池(支持国产最重要) druid连接池也需要配置文件,配置文件必须是prope ...
- JDBC学习笔记——简单的连接池
1.使用LinkedList保存连接 即使是最简单的JDBC操作,也需要包含 ...
- Java学习笔记50:JSONObject与JSONArray的使用
Java不像PHP解析和生产JSON总是一个比较痛苦的过程.但是使用JSONObject和JSONArray会让整个过程相对舒服一些. 需要依赖的包:commons-lang.jar commons- ...
- Java学习笔记50:JSONObject与JSONArray的使用(转)
Java不像PHP解析和生产JSON总是一个比较痛苦的过程.但是使用JSONObject和JSONArray会让整个过程相对舒服一些. 需要依赖的包:commons-lang.jar commons- ...
- Java基础-DBCP连接池(BasicDataSource类)详解
Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...
- DBCP连接池配置(DBCPUtils.java)
配置文件 db_dbcp.properites driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/db?useSSL= ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
随机推荐
- 使用jQuery+huandlebars遍历中if判断
兼容ie8(很实用,复制过来,仅供技术参考,更详细内容请看源地址:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html) & ...
- 用js控制 给一个input赋值之后,change事件不能捕获到,解决办法
你用js给input赋值后要调用change方法 下面是jquery的写法 $('input#3').val("50"); $('input#3').change(); 自己试试吧
- Eclipse中创建一个新的SpringBoot项目
在Eclipse中创建一个新的spring Boot项目: 1. 首先在Eclipse中安装STS插件:在Eclipse主窗口中点击 Help -> Eclipse Marketplace... ...
- k8s之配置flanneld网络
Flannel是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通信,目前已经支持UDP.VXLAN.AWS VPC和GCE路由等数据转发方式. Flannel通过给每台宿 ...
- 54. Spiral Matrix以螺旋顺序输出数组
[抄题]: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spi ...
- [leetcode]282. Expression Add Operators 表达式添加运算符
Given a string that contains only digits 0-9 and a target value, return all possibilities to add bin ...
- Java17-java语法基础——泛型
Java18-java语法基础——泛型 一.泛型概念和作用 1.泛型概念: 泛型是JavaSE1.5的新特性,泛型的本质是参数化类型,也就是说,所操作的数据类型被指定为一个参数.这种参数类型可以用在类 ...
- 腾讯云主机的公网无法访问,putty和FileZilla连接不上
1.解决方法一(之前百度都是这种安全组忘了添加) 2.解决方案二(ps:我是用centos的,然后不知道为什么访问不了,端口也是全部开的) service network restart 重置网络命令 ...
- face_recognition 相关依赖
centos-v:7 python-v:3.7 IDE:pycharm 安装顺序: boost boost-py cmake numpy opencv-python scipy 安装方法:settin ...
- 【Spark2.0源码学习】-7.Driver与DriverRunner
承接上一节内容,Client向Master发起RequestSubmitDriver请求,Master将DriverInfo添加待调度列表中(waitingDrivers),下面针对于Dri ...