转自:http://www.blogjava.net/hongqiang/archive/2012/08/08/385091.html
声明:本人转载只为分享,如涉及商业版权纠纷,请及时与本人联系,必将立即删除,造成不便,还望见谅,谢谢。
本文主要简述的内容有单例设计模式、dom4j解析xml文件(这里解析的数据库的配置文件)、通过解析出来的配置信息完成数据库的连接。
1、首先要看的是单例设计模式
单例设计模式的实现有两种:饿汉式(预先加载)、懒汉式(延迟加载),下面分别来看这两种实现方式。
(1)、饿汉式(预先加载)
public class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){}
public static synchronized Singleton getInstance(){
return instance;
}
}(2)懒汉式(延迟加载)
public class Singleton{
private static Singleton instance = null;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
观察上面的这两种模式,看起来区别并不大,前一种方式是类一旦加载就得将对象实例化了,而后一种则是在使用的时候才进行判断是否要实例化对象,并且在后一种的getInstance方法中加入了同步,这样显得更加的合理,个人更加偏好于使用第二种方式。
2、使用dom4j来完成数据库配置文件的解析
给出下面这个数据库的配置文件sys-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<db-info>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@127.0.0.1:1521:ORCL</url>
<user>username</user>
<password>password</password>
</db-info>
</config>
完成解析的java类:
(1)、保存数据库jdbc配置信息的模型类JdbcConfig.java
package org.ml.drp.util;
/**
* 用于保存数据库连接时的jdbc参数
*
* @author MuLing
*
*/
public class JdbcConfig {
private String DbDriver;
private String DbUrl;
private String DbUser;
private String DbPass;
public String getDbDriver() {
return DbDriver;
}
public void setDbDriver(String dbDriver) {
DbDriver = dbDriver;
}
public String getDbUrl() {
return DbUrl;
}
public void setDbUrl(String dbUrl) {
DbUrl = dbUrl;
}
public String getDbUser() {
return DbUser;
}
public void setDbUser(String dbUser) {
DbUser = dbUser;
}
public String getDbPass() {
return DbPass;
}
public void setDbPass(String dbPass) {
DbPass = dbPass;
}
@Override
public String toString() {
return "JdbcConfig [DbDriver=" + DbDriver + ", DbUrl=" + DbUrl
+ ", DbUser=" + DbUser + ", DbPass=" + DbPass + "]";
}
}
(2)、解析数据库配置文件的工具类XmlConfigReader.java,这里使用单例模式完成,采用的是懒汉式。
package org.ml.drp.util;
import java.io.InputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* 用于解析xml文件
* @author MuLing
*
*/
public class XmlConfigReader {
private JdbcConfig jdbcConfig = null;
private static XmlConfigReader instance = null;
private XmlConfigReader(){
SAXReader reader = new SAXReader();//取得SAXReader的对象
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");//得到输入流对象
jdbcConfig = new JdbcConfig();
Document doc = null;
try {
doc = reader.read(input); //进行读取
} catch (DocumentException e) {
e.printStackTrace();
}
//取得对应的节点对象
Element driverEle = (Element)doc.selectObject("/config/db-info/driver");
Element urlEle = (Element)doc.selectObject("/config/db-info/url");
Element userEle = (Element)doc.selectObject("/config/db-info/user");
Element passwordEle = (Element)doc.selectObject("/config/db-info/password");
jdbcConfig.setDbDriver(driverEle.getStringValue());
jdbcConfig.setDbUrl(urlEle.getStringValue());
jdbcConfig.setDbUser(userEle.getStringValue());
jdbcConfig.setDbPass(passwordEle.getStringValue());
}
public static synchronized XmlConfigReader getInstance(){
if(instance==null){
instance = new XmlConfigReader();
}
return instance;
}
public JdbcConfig getJdbcConfig(){
return this.jdbcConfig;
}
}
3、根据解析出了的配置信息完成数据库的连接
下面是一个完成数据库连接操作的测试工具类DbUtil.java
package org.ml.drp.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* 封装数据库常用操作类
* @author MuLing
*
*/
public class DbUtil {
/**
* 取得数据库的连接
* @return
*/
public static Connection getConnection(){
Connection conn = null;
//取得数据库连接字符串
JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
String DBDRIVER = jdbcConfig.getDbDriver();
String DBURL = jdbcConfig.getDbUrl();
String DBUSER = jdbcConfig.getDbUser();
String DBPASS = jdbcConfig.getDbPass();
//1:注册驱动
try {
Class.forName(DBDRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//2:获取连接
try {
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
} catch (SQLException e) {
e.printStackTrace();
}
//3:返回数据库连接
return conn;
}
//测试数据库的连接是否成功
public static void main(String args[]){
System.out.println(DbUtil.getConnection());
}
}
分享到:
相关推荐
dom4j解析xml,连接oracle数据库实例
Dom4j解析xml与配置文件的小例子,简单的Dom4j的小应用。
使用dom4j 和本地dom 解析xml 文件
本文介绍如何使用包含在dom4j中的解析器创建并修改XML文档。dom4j API包含一个解析XML文档的工具。本文中将使用这个解析器创建一个示例XML文档,然后使用同一个解析器修改。与W3C DOM API相比,使用dom4j所包含的...
使用dom4j 将xml文件中的数据导入到数据库中,包含xml文件和连接数据库文件,能够运行。 (1)用eclipse创建一个简单的java project (2)导入所需要的包 (3)编写DBUtil.java 连接数据库 (4)编写xml文件 ...
Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc
使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml
java解析xml并导入数据库(dom4j).doc
通过dom4j解析xml,修改xml,自动生成xml文件。使用dom4j模拟解析web.xml配置文件,同时考虑到一个url-pattern和多个url-pattern的情况。
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
dom,dom4j,sax解析xml 文件经典实例,内置详细注解
分别使用DOM和DOM4j解析XML文件,因为目前使用最广泛的是DOM4j所以只写了用DOM4j对XML进行增删改查。
DOM4J jar包 所有的包 xml解析 dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1 导入直接使用
使用Dom4j解析复杂的XML文件,简单的xml文件一个标签对,而复杂的xml文件标签对中还有自己的属性,那么这样的xml文件怎么解析呢?看了我的例子就知道了......
dom4j解析xml文件代码示例 dom4j解析xml文件代码示例 dom4j解析xml文件代码示例
dom4j是一个Java的XML API,是jdom的升级品,用来...如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件。
dom4j解析XML文件格式dom4j解析XML文件格式dom4j解析XML文件格式
dom4j解析xml文件的压缩包,完整版。对jdom进行了封装。包含源码,jar包以及所需的全部内容。
通过dom4j解析大华组织树到数据库,将文件zzjg.xml改成自己的组织树xml,打下断点在System.out.println(departments);后面直接运行即可得到数据(departments),注释的代码是用来添加到数据库的,仅供参考。时间很赶...
Java使用sax、dom、dom4j解析xml文档的代码,包含dom4j的jar包。