0、参照c3p0的基本使用
- 参考链接:Java数据库连接池c3p0的基本使用
1、导入jar包
- Github地址:https://github.com/alibaba/druid
- 在Tags中找到相对应的版本,说明中有下载连接,下载jar包导入到工程
2、编写配置文件
- 与c3p0不一样的地方是druid可以通过Properties对象来初始化连接池,也就是说配置文件可以随便自定义
-
配置文件同样需要包含初始化数据库及连接数据库的相关参数,如:
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://example.domain.com:3306/db?useSSL=false username=username password=password initialSize=2 maxActive=10 maxWait=3000
3、创建DataSource对象
public class DruidDemo {
public static void main(String[] args) throws Exception {
// 获取Properties文件
ClassLoader loader = DruidDemo.class.getClassLoader();
InputStream duridIs = loader.getResourceAsStream("druid.properties");
Properties props = new Properties();
props.load(duridIs);
// 获取DataSource对象,创建Connection对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(props);
for (int i = 0; i < 10; i++) {
Connection conn = dataSource.getConnection();
System.out.println(conn);
}
}
}
PS:将数据库连接封装成工具类
package com.yusian.pools;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class Utils {
// DataSource
private static DataSource ds;
static {
ClassLoader classLoader = Utils.class.getClassLoader();
try {
Properties pro = new Properties();
pro.load(classLoader.getResourceAsStream("druid.properties"));
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 从连接池获取连接对象
* @return 连接对象
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
if (ds == null) throw new SQLException("创建连接池失败!");
return ds.getConnection();
}
/**
* 释放查询类操作的所有资源
* @param conn 连接对象,归还到连接池
* @param stmt 查询对象
* @param retSet 结果对象
*/
public static void close(Connection conn, Statement stmt, ResultSet retSet) {
releaseCloseableObject(retSet);
releaseCloseableObject(stmt);
releaseCloseableObject(conn);
}
/**
* 释放更新类操作的所有资源
* @param conn 连接对象
* @param stmt 查询对象
*/
public static void close(Connection conn, Statement stmt) {
close(conn, stmt, null);
}
/**
* 释放AutoCloseable对象资源
* @param object 需要释放的对象
*/
public static void releaseCloseableObject(AutoCloseable object) {
if (object == null) return;
try {
object.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Pingback: Spring-jdbc的基本使用 | 年年有"余"