构建数据库连接的配置方法

以前我在写数据库连接的时候,都是在文件里写死的,或者一个简单地配置文件,只有一个数据库连接嘛,但是最近写一个测试工具的时候,需要很多数据库,而且有些还有分库规则,于是查找资料,完善了两个类,和xml的定义规则,分享出来。仅供参考,有任何指教请回复。不胜感谢

首先xml的配置格式定义如下

<?xml version=“1.0” encoding=“UTF-8”?>
<config>
<db-info> <id>oracle-test</id>
<driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
<url>jdbc:oracle:thin:@127.0.0.1:1521:test</url>
<user-name>admin</user-name>
<password>admin</password>
</db-info>
<db-info> <id>mysql-test</id>
<driver-name>com.mysql.jdbc.Driver</driver-name>
<url>jdbc:mysql://127.0.0.1:3306</url>
<user-name>root</user-name>
<password>root</password>
</db-info> </config>
然后我们有XmlConfigReader类,用来读取这个配置文件,并且返回对应的jdbcConfig对象。

这个对象就是一个model类,对应xml的属性

然后我们的DBUtil类会调用XmlConfigReader,通用的一般是传个

 <id>mysql-test</id>
值,然后XmlConfigReader来读取返回,对象,然后在DBUtil里用这个对象得知来构造连接,我添加了一个简单的方法
public static Connection getConnection(String dbId,String dbName) throws ClassNotFoundException
    {
        Connection conn = null;

    try {
        //新建jdbc配置类。
        XmlConfigReader xcr=new XmlConfigReader();
        JdbcConfig jdbcconfig = xcr.getConnection(dbId,dbName);
        Class.forName(jdbcconfig.getDriverName());
        //取得连接对象。
        conn = DriverManager.getConnection(jdbcconfig.getUrl(), jdbcconfig.getUserName(), jdbcconfig.getPassword());

    } catch (ClassNotFoundException e) {
        // 抛出 exception
        e.printStackTrace();
    }catch(SQLException e)
    {
        e.printStackTrace();
    }

    return conn;

}</pre>

就是多传一个数据库名

然后XmlConfigReader哩对应有这个方法

//分库分表使用
        public  JdbcConfig getConnection(String dbId,String dbName) {
            SAXReader reader = new SAXReader();

        // 拿到当前线程。
        InputStream in = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("sys-config.xml");
        try {
            Document doc = reader.read(in);
            Element rootElt = doc.getRootElement(); // 获取根节点
            Iterator&lt;?&gt; iter = rootElt.elementIterator("db-info");
            while (iter.hasNext()) {
                Element recordEle = (Element) iter.next();
                String title: = recordEle.elementTextTrim("id");
                if (title.equalsIgnoreCase(dbId)) {
                    jdbcconfig.setDriverName(recordEle
                            .elementTextTrim("driver-name"));
                    jdbcconfig.setUrl(recordEle.elementTextTrim("url")+"/"+dbName);
                    jdbcconfig.setUserName(recordEle
                            .elementTextTrim("user-name"));
                    jdbcconfig.setPassword(recordEle
                            .elementTextTrim("password"));
                }
            }

        } catch (DocumentException e) {
            // 打印错误
            e.printStackTrace();
        }
        return jdbcconfig;

    }</pre>

 

jdbcconfig.setUrl(recordEle.elementTextTrim(“url”)+“/”+dbName);
这里会有一个拼接的操作,比较简单。

这几个类我打包了。由于我是用了maven做包管理,所以org.dom4j这个包自行下载了。。

下载地址:http://pan.baidu.com/s/1o617RAy

 

 

 

java  maven  sql  工作  软件 
comments powered by Disqus