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版本驱动

猜你喜欢

转载自blog.csdn.net/sinat_41132860/article/details/84994064