Properties文件中存放键值对------(可看对Properties文件的解析)
static代码块是在构造函数之前执行的,而且只执行一次,即类首次加载时。
也就是只加载一次配置文件和加载数据库驱动
下面的getConnection()方法调用一次返回一个Connection对象
得到不相同的对象
1 //v1.0 2 public class JdbcUtils { 3 //私有的 静态对象 4 //类中的任何成员函数都可以访问静态变量 但是静态成员函数不能直接访问非静态成员,只能通过该类的 5 //对象名访问该对象的非静态成员。这是因为静态成员函数属于整个类的,没有特指向某个对象的this指针 6 private static Properties props=null; 7 static{ 8 //给props进行初始化,即加载dbconfig.properties文件到props对象中 9 10 //加载配置文件 取得该class对象类的类装载器 11 //返回 用于读取指定资源的 输入流 12 InputStream in=JdbcUtils.class.getClassLoader() 13 .getResourceAsStream("dbconfig.properties"); 14 props=new Properties(); 15 16 try { 17 //从输入字节流读取属性列表(键和元素对) 18 props.load(in); 19 } catch (IOException e) { 20 // TODO Auto-generated catch block 21 e.printStackTrace(); 22 } 23 //// 24 try { 25 // 使用此属性列表中指定的键搜索属性----key:driverClassName搜索它的属性 26 //这一步相当于加载驱动 27 Class.forName(props.getProperty("driverClassName")); 28 } catch (ClassNotFoundException e) { 29 // TODO Auto-generated catch block 30 e.printStackTrace(); 31 } 32 } 33 34 public static Connection getConnection() throws SQLException{ 35 36 /* 37 * 1加载配置文件 38 * 2加载驱动类 39 * 3调用DriverManager 40 * */ 41 //已经加载完驱动后,然后得到连接 三大参数,,,通过properties对象的getProperty("指定的键")得到值 42 return DriverManager.getConnection(props.getProperty("url"), 43 props.getProperty("username"), props.getProperty("password")); 44 } 45 }
测试,生成Connection对象
1 //测试JdbcUtils.getconnection() 2 @Test 3 public void fun3() throws SQLException{ 4 Connection con=JdbcUtils.getConnection(); 5 System.out.println(con); 6 Connection con1=JdbcUtils.getConnection(); 7 System.out.println(con1); 8 }
结果:
com.mysql.jdbc.JDBC4Connection@6a02938d
com.mysql.jdbc.JDBC4Connection@78a6edb5
Properties文件
自己写的JdbcUtils小工具-----得到Connection对象
原文:https://www.cnblogs.com/xjs1874704478/p/10713398.html