package com.zjlolife.drp.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionManager {
//ThreadLocal通常是在类中的static字段见API
public static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();
public static Connection getConnection() {
Connection conn = threadLocal.get();
if(conn==null) {
try {
JdbcInfo info = ConfigReader.getInstance().getInfo();
Class.forName(info.getDriverName());
conn = DriverManager.getConnection(info.getUrl(), info.getUsername(), info.getPassword());
threadLocal.set(conn);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return conn;
}
public static void setAutoCommit(Connection conn,boolean b) {
try {
conn.setAutoCommit(b);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
加载XML文件的类ConfigReader:
package com.zjlolife.drp.util;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class ConfigReader {
private Document doc;
private JdbcInfo info;
private static String itemDao;
public static ConfigReader instance = new ConfigReader();
private ConfigReader() {
try {
doc = new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml"));
Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");
Element urlElt = (Element)doc.selectObject("/config/db-info/url");
Element usernameElt = (Element)doc.selectObject("/config/db-info/username");
Element passwordElt = (Element)doc.selectObject("/config/db-info/password");
info = new JdbcInfo();
info.setDriverName(driverNameElt.getStringValue());
info.setUrl(urlElt.getStringValue());
info.setUsername(usernameElt.getStringValue());
info.setPassword(passwordElt.getStringValue());
Element itemDaoElt = (Element) doc.selectObject("/config/item-dao");
itemDao = itemDaoElt.getStringValue();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static ConfigReader getInstance() {
return instance;
}
public JdbcInfo getInfo() {
return info;
}
public static String getItemDao() {
return itemDao;
}
public void setItemDao(String itemDao) {
this.itemDao = itemDao;
}
public static void main(String[] args) {
JdbcInfo info = ConfigReader.getInstance().getInfo();
System.out.println(info);
}
}