您的位置:首页 > 数据库

用Dom4j解析自定义数据库XML配置文件

2017-11-24 21:43 495 查看

为什么用XML配置数据库信息

当我们在写小的Demo时,每次都会配置数据库的连接信息,即使自己写个连接工具类,如果要修改数据库连接信息,找java文件很麻烦,也不利于维护,如果把它写在一个结构化的文档里,大大降低了维护成本,需要修改什么,直接修改文档里面的内容,现在,主流框架也是这样做的

书写约束XML规范DTD文档

<!ELEMENT DBInfo (DBDriver,DBurl,DBUser,DBPassword)>
<!ELEMENT DBDriver (#PCDATA)>
<!ELEMENT DBurl (#PCDATA)>
<!ELEMENT DBUser (#PCDATA)>
<!ELEMENT DBPassword (#PCDATA)>


根据DTD约定书写数据库XML配置信息

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入dtd -->
<!DOCTYPE DBInfo SYSTEM "DataBase.dtd">
<DBInfo>
<DBDriver>com.mysql.jdbc.Driver</DBDriver>
<DBurl>jdbc:mysql://localhost:3306/jdbc?useSSL=false</DBurl>
<DBUser>root</DBUser>
<DBPassword>123456</DBPassword>
</DBInfo>


用Dom4j解析xml文件,获取信息

1.引入jar包



2.配置信息实体类

package com.tangbaobao.utils;
/**
* @author 唐学俊
* @version 创建时间:2017年11月24日 下午8:30:14
*
*/
public class DBbean {
private String dbDriver;
private String dbUrl;
private String dbUserName;
4000
private String dbPassword;
public String getDbDriver() {
return dbDriver;
}
public void setDbDriver(String dbDriver) {
this.dbDriver = dbDriver;
}
public String getDbUrl() {
return dbUrl;
}
public void setDbUrl(String dbUrl) {
this.dbUrl = dbUrl;
}
public String getDbUserName() {
return dbUserName;
}
public void setDbUserName(String dbUserName) {
this.dbUserName = dbUserName;
}
public String getDbPassword() {
return dbPassword;
}
public void setDbPassword(String dbPassword) {
this.dbPassword = dbPassword;
}

}


3.编写工具类

package com.tangbaobao.utils;
/**
* @author 唐学俊
* @version 创建时间:2017年11月24日 下午6:42:11
*
*/

import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class DBConfig {

@Test
public DBbean readXML() {
//将得到的数据封装在类
DBbean dbean = new DBbean();

try {
// 1.获得解析器
SAXReader saxReader = new SAXReader();

//获取默认配置文件名称
String xmlPath = DBConfig.class.getResource("/DataBase.xml").getPath();

// 2.获取document对象
Document doc = saxReader.read(xmlPath);

// 3.获取根元素
Element rootElement = doc.getRootElement();
System.out.println(rootElement.getName());

// 4.获取数据库信息配置信息
List<Element> list = rootElement.elements();

//5.遍历
for (Element element : list) {
if(element.getName().equals("DBDriver")){
dbean.setDbDriver(element.getText());
}
if(element.getName().equals("DBurl")){
dbean.setDbUrl(element.getText());
}
if(element.getName().equals("DBUser")){
dbean.setDbUserName(element.getText());
}
if(element.getName().equals("DBPassword")){
dbean.setDbPassword(element.getText());
}
}
} catch (Exception e) {
e.printStackTrace();
}
return dbean;
}
}


4.封装连接类

package com.tangbaobao.utils;
/**
* @author 唐学俊
* @version 创建时间:2017年11月24日 上午11:38:23
*
*/

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DataBaseUtils {
public static Connection getConnection() {
Connection connection = null ;
//初始化数据库配置
DBConfig config = new DBConfig();
DBbean dBbean = config.readXML();
try {
//加载驱动
Class.forName(dBbean.getDbDriver());
//获取连接
connection = DriverManager.getConnection(dBbean.getDbUrl(), dBbean.getDbUserName(), dBbean.getDbPassword());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}

}


5.测试类以及运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: