通用类接口:
public interface SQLUtils {
public List<Map<String, Object>> getResultSet(String dataSourceName, String query);
public String updateTable(String dataSourceName, String query);
}
实现部分
查询方法的实现:
@Override
public List<Map<String, Object>> getResultSet(String dataSourceName, String query) {
DataSource dataSource = getDatasource(dataSourceName);
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
try {
connection = dataSource.getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery(query);
int numColumns = resultSet.getMetaData().getColumnCount();
while (resultSet.next()) {
Map<String, Object> row = new LinkedHashMap<String, Object>();
for (int i = 0; i < numColumns; ++i) {
String column = resultSet.getMetaData().getColumnName(i + 1);
Object value = resultSet.getObject(i + 1);
if (value instanceof String) {
value = (StringUtils.trim((String) value));
}
if (value instanceof Clob) {
value = clobToString((Clob) value);
}
row.put(StringUtils.trim(column), value);
}
rows.add(row);
}
} catch (Exception e) {
log.error("[SQLUtilsImpl] - Unable to execute query -", query, e);
} finally {
try {
if (resultSet != null)
resultSet.close();
} catch (Exception e) {
}
try {
if (statement != null)
statement.close();
} catch (Exception e) {
}
try {
if (connection != null)
connection.close();
} catch (Exception e) {
}
}
return rows;
}
处理blog数据:
private String clobToString(Clob data) {
StringBuilder sb = new StringBuilder();
try {
Reader reader = data.getCharacterStream();
BufferedReader br = new BufferedReader(reader);
String line;
while (null != (line = br.readLine())) {
sb.append(line);
}
br.close();
} catch (SQLException e) {
log.error("[SQLUtilsImpl] - Unable to handle clob", data, e);
} catch (IOException e) {
log.error("[SQLUtilsImpl] - Unable to handle clob", data, e);
}
return sb.toString();
}
更新方法的实现:
@Override
public String updateTable(String dataSourceName, String query) {
String result = null;
DataSource dataSource = getDatasource(dataSourceName);
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
connection = dataSource.getConnection();
statement = connection.createStatement();
int returnValue = statement.executeUpdate(query);
// flag = (returnValue == 1) ? true : false;
} catch (Exception e) {
log.error("[SQLUtilsImpl] - Unable to execute query -", query, e);
result = e.getMessage();
} finally {
try {
if (resultSet != null)
resultSet.close();
} catch (Exception e) {
}
try {
if (statement != null)
statement.close();
} catch (Exception e) {
}
try {
if (connection != null)
connection.close();
} catch (Exception e) {
}
}
return result;
}