目录
(一)为什么要使用JdbcUtil工具类
(二)创建一个prorperties文件
1.在文件目录或src目录下,选择新建FIle
2.创建properties文件
3.编写配置文件
Java基础:反射
4.获取资源的方式
第一种
第二种
编辑 第三种
(一)为什么要使用JdbcUtil工具类
问题:
- 在编写jdbc的时候,在每一句sql语句以及功能的实现时,有大量重复的代码,如获取Connection,关闭资源...
- 数据库四大参数,写在代码中,硬编码(后期需要连接其他的数据库时,可能需要把代码改掉,换个环境就要改代码,修改配置参数,就要就该代码,造成不便)
解决方案:
- 封装思维 ,解决大量代码重复问题,将一样的代码取出来,加载驱动类只需要一次就行了
- 配置文件:properties文件
(二)创建一个prorperties文件
1.在文件目录或src目录下,选择新建FIle
2.创建properties文件
3.编写配置文件
把配置参数引入到properties文件里面
使用Properties格式配置文件
#注释 key=value
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/esa?useUnicode=true&characterEncoding=utf8
username=root
password=123456
为什么要使用Properties?
- Properties文件不需要像xml一样去手动解析, jdk有一个对应类:java.util.Properties,是Map接口实现类,但是key,value都是String类型
- Properties可以通过load方法,读取Properties文件,解析数据,变成key/value结构,存储到Properties对象
Java基础:反射
反射(
Reflection
),Java 中的反射机制是指,Java 程序在运行期间可以获取到一个对象的全部信息。反射机制一般用来解决Java 程序运行期间,对某个实例对象一无所知的情况下,如何调用该对象内部的方法问题。
4.获取资源的方式
不同的方式对存放文件的目录有要求
第一种
放在项目下面
Properties prop=new Properties();
//读取db.properties文件
//FileInputStream("文件名"); 相对路径:相对于user.dir
//user.dir 系统参数 当前项目路径
//D:\作业\jdbc-demo1
System.out.println(System.getProperty("user.dir"));
//FileInputStream("文件名"); 相对路径:相对于user.dir
prop.load(new FileInputStream("db.properties"));
//TestProperties.class.getResourceAsStream("db.properties");System.out.println(prop.getProperty("driverClass"));
第二种
放在同一个包下面
Properties prop=new Properties();
//读取db.properties文件
//FileInputStream("文件名"); 相对路径:相对于user.dir
//user.dir 系统参数 当前项目路径
//D:\作业\jdbc-demo1
//System.out.println(System.getProperty("user.dir"));
//FileInputStream("文件名"); 相对路径:相对于user.dir
//prop.load(new FileInputStream("db.properties"));
//TestProperties.class.getResourceAsStream("db.properties"); 要求:文件与这个类在同一个目录下
InputStream in=TestProperties.class.getResourceAsStream("db.properties");
System.out.println(in);
prop.load(in);
//获取数据
System.out.println(prop.getProperty("driverClass"));
报错:
原因:
TestProperties.class.getClassLoader().getResourceAsStream("db.properties");
要求:文件与这个类在同一个目录下
将这个包移动到与类同目录即可
解决成功:
第三种
获取类加载器,放在src下面
Properties prop=new Properties();
//读取db.properties文件
//FileInputStream("文件名"); 相对路径:相对于user.dir
//user.dir 系统参数 当前项目路径
//D:\作业\jdbc-demo1
//System.out.println(System.getProperty("user.dir"));
//FileInputStream("文件名"); 相对路径:相对于user.dir
//prop.load(new FileInputStream("db.properties"));
//TestProperties.class.getResourceAsStream("db.properties"); 要求:文件与这个类在同一个目录下
// InputStream in=TestProperties.class.getResourceAsStream("db.properties");
// System.out.println(in);
// prop.load(in);
//getClassLoader() 获取类加载器
InputStream in=TestProperties.class.getClassLoader().getResourceAsStream("db.properties");
System.out.println(in);
prop.load(in);
//获取数据
System.out.println(prop.getProperty("driverClass"));