package com.vci.server.query.refquery.utils;
|
|
import java.io.BufferedReader;
|
import java.io.IOException;
|
import java.io.Reader;
|
import java.sql.Clob;
|
import java.sql.SQLException;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.hibernate.SQLQuery;
|
import org.hibernate.Session;
|
|
import com.vci.server.base.persistence.dao.HibernateSessionFactory;
|
|
|
public class RefQueryUtils {
|
|
@SuppressWarnings("unchecked")
|
public static Map<String, Object> executeQuery(String sql, String[] cnames)
|
throws SQLException {
|
Map<String, Object> datas = new HashMap<String, Object>();
|
Session session = HibernateSessionFactory.getSession();
|
|
SQLQuery query = session.createSQLQuery(sql);
|
|
List<Object[]> rs = (List<Object[]>) query.list();
|
if(!rs.isEmpty()){
|
if(rs.iterator().hasNext()){
|
Object element = rs.iterator().next();
|
if (element instanceof String) {
|
datas.put(cnames[0], element);
|
return datas;
|
}
|
}
|
String attrVal = "";
|
for (Object[] o : rs) {
|
for (int i = 0; i < cnames.length; i++) {
|
Object resltSet = datas.get(cnames[i]);
|
List<Object> temp = null;
|
if (resltSet instanceof List) {
|
temp = (List<Object>) resltSet;
|
}
|
if(o[i] instanceof Clob){
|
attrVal = String.valueOf(o[i] == null ? "" : clobToString((Clob)o[i]));
|
}else{
|
attrVal = String.valueOf(o[i] == null ? "" : o[i]);
|
}
|
if (temp == null) {
|
List<Object> values = new ArrayList<Object>();
|
values.add(attrVal);
|
datas.put(cnames[i], values);
|
} else {
|
temp.add(attrVal);
|
}
|
|
}
|
}
|
}
|
|
return datas;
|
}
|
|
/**
|
* clob转String
|
* @param value
|
* @return
|
*/
|
public static String clobToString(Clob value) {
|
// TODO Auto-generated method stub
|
String clobValue = "";
|
try {
|
Reader is = value.getCharacterStream();
|
BufferedReader br = new BufferedReader(is);
|
String s = br.readLine();
|
StringBuffer sb = new StringBuffer();
|
while(s!=null){
|
sb.append(s);
|
s=br.readLine();
|
}
|
clobValue = sb.toString();
|
} catch (SQLException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
|
return clobValue;
|
}
|
}
|