Java-使用SQL结果设置泛型表
下面您可以找到我用来从通用SQL语句检索表的代码(SQL代码由用户在代码的另一部分中输入)。 由于将来我将存储多个表,并且检索到的表将应用一些格式函数,因此我将值存储在:Java-使用SQL结果设置泛型表,java,sql,design-patterns,Java,Sql,Design Patterns,下面您可以找到我用来从通用SQL语句检索表的代码(SQL代码由用户在代码的另一部分中输入)。 由于将来我将存储多个表,并且检索到的表将应用一些格式函数,因此我将值存储在: Map<String, Map<String,List<Object>>> tables = new HashMap<String, Map<String,List<Object>>>(); Map tables=newhashmap(); 第一个映射
Map<String, Map<String,List<Object>>> tables = new HashMap<String, Map<String,List<Object>>>();
Map tables=newhashmap();
第一个映射是表,第二个映射是列,最后列表保存每行数据
列名/顺序如下所示:
Map<String, TreeMap<Integer, String>> order = new HashMap<String, TreeMap<Integer, String>>();
Map order=newhashmap();
映射是表,树映射是列号-列名
创建非泛型表的代码为:
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
for(int i = 1; i <= rsmd.getColumnCount(); i++){
String name = rsmd.getColumnLabel(i); //Label vs name. Label is also what's defined by the user in: "as VENDA"
answer.put(name, null);
singleOrder.put(i, name);
}
while(rs.next()){
Iterator answerIt = answer.entrySet().iterator();
while (answerIt.hasNext()) { //Get Columns in index order to compare with body HashMap (unordered)
Map.Entry columnNameValue = (Map.Entry)answerIt.next(); //key = columnName, value = List
String columnName = (String) columnNameValue.getKey();
List<Object> tmp = answer.get(columnName);
if (tmp == null) {
tmp = new ArrayList<Object>();
answer.put(columnName, tmp);
}
Object item = rs.getObject(columnName);
if(item instanceof Integer){
item = ((Integer) item).doubleValue();
} else if (item instanceof Long){
item = ((Long) item).doubleValue();
} else if (item instanceof BigDecimal){
item = ((BigDecimal) item).doubleValue();
}
tmp.add(item);
}
}
PreparedStatement stmt=conn.prepareStatement(sql);
ResultSet rs=stmt.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
对于(inti=1;i)你所说的“改进”是什么意思?你有什么具体的疑问吗?基准测试的结果不好吗?我真的不知道你对表格和列的表示是正面还是反面。你能给你的问题添加一个简单表格的例子,以及它在地图中的外观吗?我在@LukasEder做了一个小的更新。正如我所写的,我没有参考资料知道我所做的是否可以接受因为它可以工作,或者这与Java模式相反
Map<String, TreeMap<Integer, String>> order = new HashMap<String, TreeMap<Integer, String>>();
table1,
1, "STORE"
2, "SALES"
3, "GOAL"
4, "EXTRA"
Map<String, Map<String,List<Object>>> tables = new HashMap<String, Map<String,List<Object>>>();
"table1",
"STORE",
"unit1"
"unit2"
"unit3"
"unit4"
"SALES",
1312
126
1361
6823
"GOAL"
1300
160
1200
6000
"EXTRA"
"info1"
"info2"
"info3"
"info4"