一个通用的用于数据库操作的类

通用类接口:

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;
    }

猜你喜欢

转载自www.cnblogs.com/blogkevin/p/10631008.html