搭建步骤
- 定义一个类
- 提供静态代码块加载配置文件,初始化连接池对象
- 提供方法
- 获取连接方法:通过数据库连接池获取连接
- 释放资源
- 获取连接池的方法
代码:
package cn.luis.DataSource.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* @ClassName JDBCDataSourceUtil
* @Description Druid连接池的工具类
* @Author L
* @Date 2020.01.18 21:20
* @Version 1.0
* @Remark TODO
**/
public class JDBCDataSourceUtil {
// 1.定义成员变量 DataSource
private static DataSource ds;
static {
try {
// 2.加载配置文件
Properties pro = new Properties();
pro.load(JDBCDataSourceUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
// 3.获取DataSource
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
获取连接
*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/*
释放资源
*/
public static void close(Statement stmt, Connection conn) {
close(null, stmt, conn);
}
/*
释放资源
*/
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close(); //归还连接
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close(); //归还连接
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close(); //归还连接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/*
获取连接池方法【有的框架只需获得连接池即可,这里暂未用到】
*/
public static DataSource getDataSource() {
return ds;
}
}
练习
使用新的工具类,完成添加操作,给db3中的account表中添加一条记录
package cn.luis.DataSource.druid;
import cn.luis.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
* @ClassName DruidDemo2
* @Description 使用新的工具类
* @Author L
* @Date 2020.01.18 21:42
* @Version 1.0
* @Remark 完成添加操作,给db3中的account表中添加一条记录
**/
public class DruidDemo2 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 1.获取连接
conn = JDBCUtils.getConnection();
// 2.定义sql
String sql = "insert into account values(null,?,?)";
// 3.获取pstmt对象
pstmt = conn.prepareStatement(sql);
// 4.赋值
pstmt.setString(1,"gangtiexia");
pstmt.setDouble(2,3000);
// 5.执行sql
int count = pstmt.executeUpdate();
System.out.println(count);
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 6.释放资源
JDBCUtils.close(pstmt,conn);
}
}
}
结果:
1