抽取JDBCUtils工具类

在利用最初始代码加载数据库驱动,获取连接,是否资源在大量的重复,因此可以将其进行抽取

在这里我们创建一个JDBCUtils的工具类  :主要功能对外提供获取连接和释放资源的代码

数据库参数配置文件

db.properties配置文件放在src目录下即可,解决硬编码问题

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///db1?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username=root
password=1234

硬编码:一种将值或参数直接写入代码中的做法,而不是将其作为可配置或可变的变量或参数。这意味着在编写代码时,将常量值直接嵌入到代码中,而不是以某种可配置或可变的方式来引用它。

缺点:会导致代码的可维护性和科扩展性受到影响。当需要更改这些值时,必须直接修改源代码,这可能会导致代码变得脆弱并引入错误。

JDBCUtils工具类

代码演示:

public class JDBCUtils {
private static String driver;
private static String url;
private static String username;
private static String password;
/*
* 如果某些代码在整个程序中只需要执行一次,并且是需要最先执行
* 可以使用java提供的静态代码块完成 { 代码 块}
*/
static{
// 加载驱动
try {
/*
* 读取配置文件中配置的公共的常量数据,
* 使用集合类中的Properites类来读取流中的具有
* key=value的这样的配置数据。
* Properties 本身就是一个Map集合。只是它主要和IO流集合使用
*/
Properties prop = new Properties();
// store方法,将集合中的数据保存到io流中(文件)
// load方法,从流中读取数据然后存储到map集合中
// 获取IO流读取配置文件中的数据
InputStream in = JDBCUtils.class.getResourceAsStream("/db.properties");
prop.load( in);
// 从集合中获取数据
driver = prop.getProperty("driver");
url = prop.getProperty("url");
username = prop.getProperty("username");
password = prop.getProperty("password");
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 提供获取连接的代码
*/
public static Connection getConnection() throws Exception{
// 获取连接
Connection conn = DriverManager.getConnection(url,username,password);
return conn;
}
/*
* 释放资源
*/
public static void close( Connection conn , Statement stmt ){
if( conn != null ){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
if( stmt != null ){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
}
public static void close( Connection conn , Statement stmt , ResultSet rs){
close(conn , stmt);
if( rs != null ){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
}
}

在需要调用方法时直接利用静态方法特性 JDBCUtils.getConnection() 加载驱动即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值