配置文件(properties文件)与 JDBC工具类(JDBCUtils)创建

目录

  • 配置文件(properties文件)
    • java加载配置文件步骤
  • JDBC工具类

配置文件(properties文件)

  • properties 文件是一种属性文件,这种文件以键值对 key=value 格式存储内容(键值都是字符串类型)。Java中可以使用util包下的Properties类来读取这个文件。
  • 可以用“#”作为注释。

解决传参的问题。后缀为.properties,只需在配置文件中设置响应的参数。

# 名为 jdbc.properties 的配置文件,不需要以分号结尾。
url=jdbc:mysql://localhost:3306/db3
username=root
password=root
driver=com.mysql.jdbc.Driver

java加载配置文件步骤

1、创建 Properties 集合类对象

Properties pro = new Properties();

2、获得配置文件资源路径

使用类加载器,假如 JDBCUtils 为当前类的类名,获得当前类的字节码文件对象即Class对象,通过该对象的 getClassLoader 方法获取当前类的类加载器对象

使用当前类的类加载器对象的 getResource(String name) 方法可以得到给定资源名称资源路径。返回的是 URL 对象,即文件路径对象(放在src下的不同子目录,参数name传递的路径级数不一样。这里直接将配置文件放在src目录下)。如返回file:/E:/Idea/Test/out/production/test/com/qgl/jdbc.properties。

调用URL的成员方法getPath(),返回文件路径的字符串形式。得到配置文件资源的字符串路径。这样得到的路径不会随项目文件路径变动而改动代码。

ClassLoader cla = JDBCUtils.class.getClassLoader();
URL urlPath  = cla.getResource("jdbc.properties"); 
String path = urlPath.getPath();

3、加载配置文件进内存

pro.load(new FileReader(path));

4、根据 Properties 对象方法获得配置文件中的属性值

如根据配置文件中的属性名获取响应的属性值数据。

url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
driver = pro.getProperty("driver");

5、使用获得的数据

如加载注册数据库驱动

Class.forName(driver);

JDBC工具类

创建一个类,用于封装JDBC的一些操作(封装注册驱动的代码、获取连接对象、释放资源),简化书写。

public class JDBCUtils {
	// 1.	声明静态参数成员变量
	private static String url;
	private static String username;
	private static String password;
	private static String drive;
	// 2. 使用配置文件,解决传参问题;使用静态代码块,随着类的加载而加载,只会执行一次。
	static {
		
		try {
			// 创建 Properties 集合类对象
			Properties pro = new Properties();
			// 获取配置文件的资源路径
			ClassLoader cla = JDBCUtils.class.getClassLoader();
			URL urlPath  = cla.getResource("jdbc.properties"); 
			String path = urlPath.getPath();
			// 加载配置文件进内存
			pro.load(new FileReader(path));
			// 获取数据
			url = pro.getProperty("url");
			username = pro.getProperty("username");
			password = pro.getProperty("password");
			driver = pro.getProperty("driver");
			// 注册驱动
			Class.forName(driver);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 3. 定义获取连接对象的方法
	public static Connection getConnection() throws SQLException {
		return DriverManager.getConnection(url,username,password);
	}

	// 4.定义关闭资源的方法
	public static void close(Connection conn, Statement stmt, ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
			 	e.printStackTrace();
			}
		}

		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	// 5.重载关闭方法
	public static void close(Connection conn, Statement stmt) {
		close(conn, stmt, null);
	}
}

你可能感兴趣的:(Java,java)