在使用JDBC 时,有时需要多次使用相同的代码,造成代码冗余,产生强耦合,因此可以使用提取相同的代码,将其写成配置文件和工具类进行解耦。
书写配置类
1.右键文件夹,选择NEW–>FILE,然后命名
2.在配置文件书写信息
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&charcaterEncoding=utf8&useSSL=true
username=root
password=123456
书写工具类
1.new–>java class
2.书写工具类信息
package com.zhimin.lesson02.utils;
import java.sql.*;
import java.util.Properties;
import java.io.InputStream;
public class jdbcUtils {
private static String driver = null;
private static String url = null;
private static String username = null;
private static String password = null;
static {
try {
InputStream in = jdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties();
properties.load(in);
driver = properties.getProperty("driver");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
//1.驱动只加载一次
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
//获取链接
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,username,password);
}
//释放资源
public static void release(Connection conn, Statement st, ResultSet rs){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
测试实例
package com.zhimin.lesson02.utils;
import java.sql.*;
public class TestInsert {
public static void main(String[] args){
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
conn = jdbcUtils.getConnection();
st = conn.createStatement();
String sql = "INSERT INTO users(id,`NAME`,`PASSWORD`,`email`,`birthday`) values (4,'大飞','123456','172@163.com','2021-03-24')";
int i = st.executeUpdate(sql);
if(i>0){
System.out.println("插入成功");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
jdbcUtils.release(conn,st,rs);
}
}
}