德鲁伊连接池-Druid
利用Druid连接池获得数据库连接(得到一个连接对象):
package com.hk.utils;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
public class DbUtils {
private static DruidDataSource druidDataSource;
//初始化德鲁伊连接池
static {
//getClassLoader();得到类加载器对象(单例)
InputStream is = DbUtils.class.getClassLoader().getResourceAsStream("druid.properties");//得到信息流
Properties properties = new Properties();//配置文件对象
try {
properties.load(is);//读取配置文件
is.close();
druidDataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);//加载配置文件,获取德鲁伊连接池
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//获取数据库连接对象
public static Connection getConnection() {
Connection conn = null;
try{
conn = druidDataSource.getConnection();
}catch (Exception ex) {
ex.printStackTrace();
}
return conn;
}
//关闭结果集和数据库处理对象(或预处理对象)和数据库连接对象(数据连接池本质上不会被关闭)
public static void close(ResultSet rs, Statement statement, Connection conn) {
try{
if(null != rs) {
rs.close();
}
if(null != statement) {
statement.close();
}
if(null != conn) {
conn.close();
}
}catch (Exception ex) {
ex.printStackTrace();
}
}
}
配置文件信息:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/javaweb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username=root
password=123456
#初始化的时候,连接池中放多少个连接
initialSize=10
# 最大存货的连接数量
maxActive=50
#最小空闲数量
minIdle=5
#配置获取连接等待超时的时间
maxWait=10000
#验证连接池中的连接是否有效的sql语句
validationQuery='select 1'
#在获取连接的时候,验证拿到连接是否为有效连接
testOnBorrow=false
#在归还连接的时候,验证是否为有效连接
test-on-return=false
#空闲的时候验证是否有效
test-while-idle=true
Don't just do it. Show me your Blog. 语雀地址 : https://www.yuque.com/bigbeardhk/java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义