public class XmlConfigReader {
//饿汉式(预先加载)
/*private static XmlConfigReader instance = new XmlConfigReader();
private XmlConfigReader(){
};
public static XmlConfigReader getInstance(){
return instance;
};*/
//懒汉式(延迟加载)
//私有静态成员变量
private static XmlConfigReader instance = null;
//保存jdbc相关配置信息
private JdbcConfig jdbcConfig = new JdbcConfig();
//构造方法
private XmlConfigReader(){
SAXReader reader = new SAXReader();
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");
try {
org.dom4j.Document doc = reader.read(in);
//取得jdbc相关配置信息
Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");
Element urlElt = (Element)doc.selectObject("/config/db-info/url");
Element userElt = (Element)doc.selectObject("/config/db-info/user");
Element passowrdElt = (Element)doc.selectObject("/config/db-info/password");
//设置jdbc相关的配置
jdbcConfig.setDriverName(driverNameElt.getStringValue());
jdbcConfig.setUrl(urlElt.getStringValue());
jdbcConfig.setUser(userElt.getStringValue());
jdbcConfig.setPassword(passowrdElt.attributeValue("name"));
} catch (DocumentException e) {
e.printStackTrace();
}
};
//公有静态入口方法
public static synchronized XmlConfigReader getInstance(){
if (instance == null){
instance = new XmlConfigReader();
}
return instance;
}
/**
* 返回jdbc相关配置
* @return
*/
public JdbcConfig getJdbcConfig(){
return jdbcConfig;
}
5.Dbutil连接配置的数据库(从jdbcConfig获取参数)
public static Connection getConnection(){
Connection conn = null;
try{
//加载Oracle的驱动类
JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
Class.forName(jdbcConfig.getDriverName()) ;
conn =DriverManager.getConnection(jdbcConfig.getUrl() , jdbcConfig.getUser() , jdbcConfig.getPassword() ) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
return conn;
}
6.业务逻辑层访问数据库
引入包util
import com.bgt.drp.util.DbUtil;
public Client findUser(int id){
//...
Connection conn = null;
try {
conn = DbUtil.getConnection();
//....
} catch (Exception e) {
e.printStackTrace();
} finally {
DbUtil.close(conn);
}
return null;
}