读书人

java调用sql XML配置文件 札记

发布时间: 2012-11-04 10:42:41 作者: rapoo

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>

读书人网 >XML SOAP

热点推荐