此文章是基于  搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台

 

一. jar包介绍 

  1. commons-digester3-3.2.jar

  2. commons-beanutils-1.9.3.jar

 

二. 类介绍

  1. SqlXmlParser.java,xml 解析器

package com.ims.persistence.base;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.commons.digester3.Digester;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;

public class SqlXmlParser {
    private String sqlXml;
    private static Digester digester;
    
    private static String webrootPath = System.getProperty("webapp.root")+"sql/";
    private static Logger logger = Logger.getLogger(SqlXmlParser.class);
    
    static{
        digester = new Digester();
        digester.setValidating(false);
        
        digester.addObjectCreate("set", SqlSet.class);
        
        digester.addObjectCreate("set/sql", Sql.class);
        digester.addSetProperties("set/sql");
        digester.addBeanPropertySetter("set/sql/pattern");  
        digester.addSetNext("set/sql", "addSql");
        
        digester.addObjectCreate("set/sql/param", SqlParam.class);
        digester.addSetProperties("set/sql/param");
        digester.addSetNext("set/sql/param", "addParam"); 
    }
    
    public SqlXmlParser(String sqlXml){
        this.sqlXml = sqlXml; 
    }
    
    public String parse(String sqlName, Map<String, String> params){    
        InputStream is = null;
        String result = null;
        try{
            is = new FileInputStream(new File(webrootPath+sqlXml));
            SqlSet sqlSet = (SqlSet)digester.parse(is);
            Sql sql = sqlSet.getSqls().get(sqlName);
            List<String> paramList = new ArrayList<String>(); 
            for(SqlParam param : sql.getCondition()){
                String value = params.get(param.getName());
                paramList.add(param.getPosition(), StringUtils.isBlank(value)?"":value);
            }
            result = MessageFormat.format(sql.getPattern(), paramList.toArray());
        }catch(Exception e1){
            logger.error("sql文件解析异常:"+e1);
        }finally {
            if(is != null) {
                try {
                    is.close();
                }catch (Exception e2) {
                    logger.error("sql文件流关闭异常:"+e2);
                }    
                
                is = null;
                digester.clear();
            }
        }
        
        return result;
    }
}
View Code

相关文章:

  • 2022-12-23
  • 2022-01-01
  • 2021-05-21
  • 2021-06-16
  • 2022-02-10
  • 2021-05-20
  • 2022-12-23
  • 2021-09-23
猜你喜欢
  • 2021-06-14
  • 2021-06-27
  • 2022-12-23
  • 2022-01-17
  • 2022-12-23
  • 2022-01-06
  • 2021-12-04
相关资源
相似解决方案