本文给大家分享一个通过解析配置文件创建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
希望对看到的人有所帮助
!!!!!