如何通过配置文件连接数据库?

背景
1  在src 路径下创建 配置文件 db.properties
2  在工具util包中 创建类 ConfigManager 

父类 :BaseDao.java 中有 自定义连接方法getConnection(),将其中的driver,url,username,password 修改成调用ConfigManager的方法得到;


 db.properties



jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/kgcnews
jdbc.username=root
jdbc.password=root
ConfigManager 
package com.kgc.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ConfigManager {
	/*1.单例模式只能有一个实例
	 *2.单例模式必须自己建立一个唯一的实例
	 *3.单例类必须给整个项目的其他对象提供这个实例
	 *单例模式分为 饱汉类和饿汉类
	 * */
	//饿汉模式
	//private static ConfigManager cm=new ConfigManager();
	//饱汉模式
	private static ConfigManager cm;
	public  Properties p;
	
	//构造器 通过 输入流 读取 配置文件
	public ConfigManager(){
		//将 配置文件 db.properties 转化成 输入流
		InputStream is=ConfigManager.class.getClassLoader().getResourceAsStream("db.properties");
		//加载流
		try {
			p.load(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(is!=null){
				try {
					is.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	// 通过配置文件的 key 得到 对应的value
	public String getValue(String key){
		return p.getProperty(key);
		
	}
	
	/*饿汉模式
	public static ConfigManager getInstance(){
		return cm;
		
	}*/
	
	//饱汉模式:创建一个自身的实例
	public static ConfigManager getInstance(){
		if(cm==null){
			cm=new ConfigManager();
		}
		
		return cm;
		
	}
	
}

BaseDao.java

public class BaseDao {
	//实现增删改查的功能  以及连接 和释放资源
	Connection cnt=null;
	PreparedStatement ps=null;
	ResultSet rs=null;
	
	//连接有3种方式 :通过配置文件连接
	public boolean getConnection(){
		String driver=ConfigManager.getInstance().getValue("jdbc.driver");
		String url=ConfigManager.getInstance().getValue("jdbc.url");
		String username=ConfigManager.getInstance().getValue("root");
		String password=ConfigManager.getInstance().getValue("root");
		
		try {
			Class.forName(driver);
			cnt=DriverManager.getConnection(url,username,password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return true;
		
	}
	下面省略——————————

猜你喜欢

转载自blog.csdn.net/java_stud/article/details/80487432