gpt4 book ai didi

java - Java 结果集编码的有效方法

转载 作者:行者123 更新时间:2023-12-02 08:12:56 25 4
gpt4 key购买 nike

我有大约 40 个 Web 服务,对于每个服务,我都有以下代码来从数据库获取结果。我最多只从数据库中检索大约 200 行,很多时候比这个少得多。然而,一位开发人员告诉我,这段代码的效率不是很高,尤其是 getColumnName 方法,它的成本很高。我只是想使用 getColumnName 作为键,因为它是描述性的。有没有更有效的方法来完成与下面相同的事情?如果是这样,我怎样才能提高效率?我应该研究哪些设计模式来使其变得更好?提前致谢。

 try{
...
//Open Db Connection
...
ResultSet rs = stmt.executeQuery(QueryClass.getQuery());
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();

while(rs.next()){
HashMap<String, Object> map = new HashMap<String, Object>(columnCount);
for (int i = 1; i <= columnCount; i++ ) {
map.put(rsmd.getColumnName(i), rsmd.getObject(i));

}

//add to arraylist
list.add(map);
}
} catch(SQLException e){
.....

}

最佳答案

如果您没有看到性能问题,那么实际上没有必要仅仅出于效率原因而更改代码。如果您正在使用的结构对您有意义,那么您应该坚持使用它。

您可能还需要考虑一些其他选项:

  1. 拥有一个单独存储一次的列名称列表:

    List<String> columnNames;

    List<List<Object>> rowData;

  2. 按列而不是按行记录数据:

    Map<String, List<Object>> columnData;

  3. 通过定义一个可以使用适合表的方法实现的接口(interface)来封装查询,如果遇到性能问题,您可以更改实现而不更改接口(interface)。

例如:

public interface Table {
List<String> getColumnNames();
Object getValue(String column, int row);
}

关于java - Java 结果集编码的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39862466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com