自写数据库连接的工具类
对数据库的连接操作枯燥且类似,每一个项目都必须要有,但这东西写起来有没有什么技术含量,那么我们能不能自己写一个工具类,以后每一次都只要修改配置文件中的参数,不用重写连接代码,直接复用之前的代码呢?
答案是肯定的
废话少说上代码
一. 不用第三发工具裸写连接工具类`
在这里插入代码片
/** * 数据库工具类 * 通过这个工具类获取应用程序和数据库之间的通道,Connection对象 *
使用完之后,进行数据的释放 */
public class DBUtils {
static Properties prop = new Properties();
//获取数据库连接
static {
InputStream is = DBUtils.class.getClassLoader().getResourceAsStream("dbconfig.properties");
//通过输入流加载属性文件
try {
prop.load(is);
Class.forName(prop.getProperty("driverClassName"));
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
try {
return DriverManager.getConnection(prop.getProperty("url"),prop.getProperty("user"),prop.getProperty("password"));
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return null;
}
//释放连接
public static void closeResource(Connection conn, Statement stmt, ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(stmt!=null){
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
二. 用德鲁伊连接池来写连接工具类
/**
* 基于DruidDataSource数据库工具类
* @Author:drt
* @date 2021/8/5 10:05
* @Version 1.0
*/
public class DBUtils {
//定义数据源对象,不要导错包了
private static DataSource dataSource;
//静态代码块,读取属性配置文件的信息,并通过德鲁伊jar创建数据源对象
static{
//创建一个Properties对象
Properties prop = new Properties();
//获取属性配置文件的输入流的对象
InputStream is = DBUtils.class.getClassLoader().getResourceAsStream("db-config.properties");
try{
//加载输入流,将配置文件的数据,读取到Properties对象中
prop.load(is);
//调用连接池工厂,创建数据源对象,并赋值给该类的静态成员dataSource
dataSource= DruidDataSourceFactory.createDataSource(prop);
}catch (Exception e){
e.printStackTrace();
}
}
//获得连接对象并返回
public static Connection getConnection(){
Connection conn = null;
try{
//从连接数据源获取连接对象
conn = dataSource.getConnection();
}catch (Exception e){
e.printStackTrace();
}
return conn;
}
//关闭资源
public static void closeAllResource(Connection conn, Statement stmt, ResultSet rs){
try{
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if (conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
配置文件这里我就不开源了,目前我使用的是阿里的德鲁伊连接池,在使用之前需要导入依赖(第三方jar包)
三、开源数据库连接池
现在很多WEB服务器(Weblogic, WebSphere, Tomcat)都提供了DataSoruce的实现,即连接池的实现。通常我们把DataSource的实现,按其英文含义称之为数据源,数据源中都包含了数据库连接池的实现。
也有一些开源组织提供了数据源的独立实现:
DBCP 数据库连接池
C3P0 数据库连接池
Druid 数据库连接池
在使用了数据库连接池之后,在项目的实际开发中就不需要编写连接数据库的代码了,直接从数据源获得数据库的连接。
我个人比较推荐Druid
其优点如下
Druid:Druid不仅是一个数据库连接池,还包含一个ProxyDriver、一系列内置的JDBC组件库、一个SQL Parser。
支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等。
你们也可以参照我的自己写 DBCP 和 C3P0 的数据库连接工具类。不过切记要导入对应的依赖包