java调用sql XML配置文件 札记

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>