通过配置获取JDBC连接

本文给大家分享一个通过解析配置文件创建JDBC连接的工具类(小白,希望大家多多指正)

1.创建db.properties配置文件

#####用户名
user=root
#####连接地址
url=jdbc:mysql://localhost:3306/db_test_1030
#####密码
password=root
#####驱动
driver=com.mysql.jdbc.Driver

2.创建DBConfig.java (与配置文件对应的javabean)

        /**
	 * 连接地址
	 */
	private String url;
	
	/**
	 * 密码
	 */
	private String password;
	
       /**
        * 用户名
       */
	private String user;
	
	/**
	 * 驱动
	 */
	private String driver;

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getUser() {
		return user;
	}

	public void setUser(String user) {
		this.user = user;
	}

	public String getDriver() {
		return driver;
	}

	public void setDriver(String driver) {
		this.driver = driver;
	}

3.JDBC连接工具 JDBCUtils.java,  将配置文件解析到DBConfig对象中,通过DBConfig连接数据库

	public Connection con;
	
	private static JDBCUtils JdbcUtils = null;
	
	/**
	 * 单例
	 * @return
	 */
	public static JDBCUtils getJdbcUtils() {
		if(JdbcUtils==null) {
			JdbcUtils = new JDBCUtils();
		}
		return JdbcUtils;
	}
	
	private JDBCUtils() {
		//将数据库配置文件解析到DBConfig对象中
		DBConfig dbConfig = loadDBConfig("/com/yc/demo/jdbc/db.properties",DBConfig.class);
		try {
			Class.forName(dbConfig.getDriver());
			con = DriverManager.getConnection(dbConfig.getUrl(),dbConfig.getUser(),dbConfig.getPassword());
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 获取连接
	 * @return
	 */
	public Connection getConnection() {
		return con;
	}
	
	/**
	 * 将配置文件解析到目标文件中
	 * @param path
	 * @return
	 */
	public static <T> T loadDBConfig(String path,Class<T> target) {
		InputStream in = JDBCUtils.class.getResourceAsStream(path);
		Properties p  = new Properties();
		try {
			p.load(in);
		} catch (IOException e) {
			System.out.println("++++++装载失败+++++++");
			e.printStackTrace();
		}
		T t;
		try {
			t = target.newInstance();
			Method[] methods = target.getMethods();
			for(Method method : methods) {
				String methodName = method.getName();
				if(methodName.startsWith("set")) {
					String key = methodName.substring(3).toLowerCase();
					for(Map.Entry m : p.entrySet()) {
						if(key.equals(m.getKey())) {
							try {
								method.invoke(t,m.getValue().toString());
							} catch (Exception e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
					}
				}
			}
			return  t;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return  null;
		} 
	}
	

4.测试(为了代码简洁,直接异常抛出,不能这么干)

public static void main(String[] args) throws Exception{
	Connection con = JDBCUtils.getJdbcUtils().getConnection();
	stat = con.createStatement();
	String sql = "select * from t_user";
	ResultSet rs = stat.executeQuery(sql);
	while(rs.next()) {
	System.out.println("username:"+rs.getString("username")+"	Id: "+rs.getString("id"));
}

5.结果

username:ddd	Id: 402880ff5f6bc397015f6bc398f20000
username:sss	Id: 402880ff5f6bc6e0015f6bc6e0d40000
username:sss	Id: 402880ff5f6bc7ec015f6bc7ece20000
希望对看到的人有所帮助

!!!!!



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值