java调用sql XML配置文件 札记
java调用sql XML配置文件
在java开发的过程中经常会写到关于调用数据库SQL的语句,可能每一个DAO里都会用到SQL语句,
这样会使你查看代码的时候,有时间要找半天才能找到,如果才能调用一个统一的SQL配置文件呢?
以下代码是我个人在以往的项目用到的关于调用SQL配置文件的使用方法,整理如下:
希望对用到的朋友有所帮肋,
如有不同的用法或者建议,请提出。。。。
/**
*
* 调用XML配置文件里的内容,
*/
public class XMLFileUtil{
public static void main(String[] args) throws Exception {
XMLFileUtil xf = new XMLFileUtil();
//得到相应目录下的要调用的 关于配置sql的 xml文件(存放在开发过程中所用到的sql语句)
File f = new File("E:\\workspace\\hibernate\\src\\spirng\\sql\\xml\\test\\XMLFileUtil\\manager1.xml");
//System.out.println(f.getPath());
SAXReader reader = new SAXReader();
//Document xmlDomContent = reader.read(f);
Document xmlDomContent = xf.LoadXmlFile(f.getPath()); //加载xml文件
//System.out.println(">>>>>>>doc="+xmlDomContent);
//只要调用SQL配置文件里的id ="userQuery"
Element hqlElement = XMLFileUtil.findElement(xmlDomContent
.getRootElement(), "HQL", "id", "userQuery");
if (hqlElement != null) { // 取得Element中的implementation属性对象...
Element sqlQuery = hqlElement
.element("sql");
if (sqlQuery != null) { // 取这个属性的值...
String sqlstr = sqlQuery.getText();
//System.out.println(">>>>>>>sqlstr="+sqlstr);
}
}
String sql = xf.getBeanSql("studentQuery");
System.out.println(">>>>>>>sql="+sql);
System.out.println(">>>>>>>sql="+xf.getClass().getResource(""));
}
}
//加载Sql xml 配置文件
public static Document LoadXmlFile(String filePath) {
SAXReader reader = new SAXReader();
// try to load xml data into Document object
Document doc = null;
try {
String urlString = null;
if (filePath.startsWith("\\")) {
urlString = "file:\\" + filePath;
System.out.println(urlString);
} else {
urlString = "file:\\" + filePath;
System.out.println(urlString);
}
logger.debug("XML File's URL :" + urlString);
doc = reader.read(new URL(urlString));
} catch (Exception ex) {
logger.info("Can not load " + filePath);
logger.debug(ex.getMessage(), ex);
}
// return Document object
return doc;
}
//查找XML元素 findElement
public static Element findElement(Element searchedElement,
String targetNodePrefix, String targetNodeAttributeName,
String targetNodeAttributeValue) {
Element elementTarget = null;
for (Iterator i = searchedElement.elementIterator(targetNodePrefix); i
.hasNext();) {
Element element = (Element) i.next();
String strManagerName = XMLFileUtil.getAttributeValue(element,
targetNodeAttributeName);
if (strManagerName.equals(targetNodeAttributeValue)) {
elementTarget = element;
break;
}
}
return elementTarget;
}
manager1.xml 文件代码:
<?xml version="1.0" encoding="UTF-8"?>
<managers>
<HQL id="userQuery">
<sql>from User u where u.name =:user</sql>
</HQL>
<HQL id="studentQuery">
<sql>from Student s where s.name =:user and s.id =:id</sql>
</HQL>
</managers>