目录
- 配置文件(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);
}
}