05jdbc程式碼重構
阿新 • • 發佈:2018-12-15
前面註冊驅動和建立連線的程式碼都是重複的,可複用性不高,如果需要更換資料庫或者使用者名稱或者密碼的話要改動很多內容,可維護性不高,為了方便複用,可以將經常變換的內容寫入到配置檔案
建立一個db.properties檔案,將資料庫驅動和使用者名稱密碼等內容寫入到該檔案
classDriver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/study1?useSSL=false&serverTimezone=UTC
username=root
password=root
之前說過properties檔案每行存放 鍵=值,不用分號結尾
再建立一個工具類DBUtil,用來註冊驅動和獲取連線
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.ResourceBundle; public class DBUtil { private static String driverClass; private static String url; private static String username; private static String password; static { ResourceBundle rb=ResourceBundle.getBundle("util/db"); // ResourceBundle rb=ResourceBundle.getBundle("util.db");//配置檔案在src目錄下util包下 driverClass=rb.getString("driverClass"); url=rb.getString("url"); username=rb.getString("username"); password= rb.getString("password"); try { Class.forName(driverClass); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url,username,password); } }
其中ResourceBundle抽象類可以讀取properties配置檔案
ResourceBundle類用於國際化(多語言)的庫。它能夠根據為系統配置的預設區域設定返回訊息。適用於開發世界各地的專案
static final ResourceBundle getBundle(String baseName)讀取的檔案是在classpath路徑下,即src或者src目錄下,如果properties檔案不再src目錄下,而在某個包的目錄下,需要以包名/檔名的方式引入,注意檔名不要加字尾
String getString(String key)讀取某個鍵對應的值,以字串形式返回
經過改造後的jdbc程式碼變成這樣子了
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import util.DBUtil;
public class JdbcTest01new {
public static void main(String[]args) {
try (
//獲取連線Connection
Connection conn=DBUtil.getConnection();
///得到執行sequel語句的物件Statement
Statement stmt=conn.createStatement();
//執行sql語句,並返回結果
ResultSet rs=stmt.executeQuery("select * from employee")
//處理結果
){
while(rs.next()) {
System.out.println(rs.getObject("employeenumber"));
System.out.println(rs.getObject("employeename"));
System.out.println(rs.getObject("departmentnumber"));
System.out.println(rs.getObject("salary"));
System.out.println(rs.getObject("hiredate"));
System.out.println("-================");
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
所以,以後修改資料庫或者使用者名稱/密碼時,直接修改配置檔案就好了,配置檔案中的driverClass和url適用於mysql8.0版本驅動