1. 程式人生 > >05jdbc程式碼重構

05jdbc程式碼重構

前面註冊驅動和建立連線的程式碼都是重複的,可複用性不高,如果需要更換資料庫或者使用者名稱或者密碼的話要改動很多內容,可維護性不高,為了方便複用,可以將經常變換的內容寫入到配置檔案

建立一個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版本驅動