学习配置文件的使用
在我们刚开始学习使用JDBC连接数据库 (以MySQL为例) 时,我们通常都会行云流水的打一套组合拳。如下:其中获取连接对象的url,user,password就省略不写了;
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver")
//2、获取连接对象
Connection conn = DriverManager.getConnection(url, user, password);
//3、获取执行对象
Statement stat = conn.createStatement();
//4.进行查询操作
ResultSet rs = stat.executeQuery("select *from t_course");
然后我们就可以发现,每次进行数据库操作时,都要这样写会很繁琐,代码冗余太多,就会想着进行改进,由此出现了自定义工具类,把重复执行的代码尽量抽取出来;
public class DBUtils {
//加载驱动放入静态代码块中...只需要加载一次
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接对象;
public static Connection getConnection(){
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql_test", "root", "1230");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
//1、加载驱动 2、获取连接对象
conn = DBUtils.getConnection();
//3、获取执行对象
stat = conn.createStatement();
//4.进行查询操作
rs = stat.executeQuery("select *from t_course");
结果好像并没有优化多少. . . 跳过跳过
在自定义类工具中,我们还可以针对URL,UserName,PassWord等参数进行优化,也就是使用**配置文件**;
首先我们要了解到,什么是配置文件?
简单的来说吧,在Java中配置文件是软件开发过程中非常常用的一类文件,目的是将软件运行需要使用的参数、用户偏好等配置信息灵活的以可编辑文件的形式存储下来。就好比我们加载数据库驱动时需要的Class Name,也好比获取连接对象中传入的URL,UserName,Password参数;可以将其先写入可编辑文件中,之后通过获取传入,这样的话以后更换数据库、表文件、或者更新用户信息时就不需要去更改程序,能够减少错误的,提高规范性;
这也就是为什么要设置配置文件了?
官方的说它能使程序更灵活,以后变更数据库信息,只需更改配置文件
如何设置?
1.命名规范:dbconfig.properties一般以properties结尾
2.实例化Properties对象并load配置文件
3.根据key获取出对应的value值
理论结束了我们就进行实战:
先来观察工程结构:config.properties就是创建的配置文件放在工程下即可,放具体的包中也可以;
接下来观察配置文件中的内容:[注意] 在结尾处不允许有空格,不然后续执行会出现Bug;在这里的话可以看成是键值对的形式,等号左边为Key,右边为Value;所以我们可以通过Key来得到想要的值;
driverName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/sys_stu
username=root
password=1230
接下来就是代码实现,这里是放在工具类中,和上面方式结合。
public class DBUtils {
//将需要用到的变量抽取出来
private static String driver;
private static String url;
private static String username;
private static String password;
static{
try {
//实例化配置属性的对象
Properties properties = new Properties();
//将配置文件加载进去
properties.load(new FileInputStream("config.properties"));
//通过Key来获取Value
driver = properties.getProperty("driverName");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
Class.forName(driver);
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection conn = null;
try {
conn = DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}