我有一个sql语句,它会带回以下行:
我想从JDBC结果集中获取这些值作为两个对象。一个用于customerNo 1的客户,另一个用于客户2.我希望这两个对象具有另一个数组值以及相关的标题和对象值。
结构最终看起来像这样(在JSON中):
{customerNo:1,[“对象1”,“对象2”,“对象3”]},{customerNo:2,[“对象4”,“对象5”]}
如何使用JDBC实现此目的?
答案 0 :(得分:2)
您可以使用地图以最初的格式收集所需的格式。
Map<Integer, Set<String>> customerTitles = new HashMap<Integer, Set<String>>();
while(resultSet.next()) {
Integer custId = resultSet.getInt(1);
Set<String> titles = customerTitles.containsKey(custId) ?
customerTitles.get(custId) : new HashSet<String>();
titles.add(resultSet.getString(2));
customerTitles.put(custId, titles);
}
一旦你以这种方式收集它,你可以迭代Map,然后在其中迭代并将它们转换为JSON
// Convert to Json array here using your JSON library
for(Integer custId : customerTitles.keySet()) {
for(String title : customerTitles.get(custId)) {
}
}
答案 1 :(得分:0)
我能想到两种方式。
首先使用CustomerNo
查询获取SELECT DISTINCT
并将其保存在COLLECTION
中。
然后,CustomerNo
中的每个{使用循环} COLLECTION
执行SELECT Title from table WHERE CustomerNo = <collectionValue>
,并为每个JSON Object
创建一个新的CustomerNo
。
使用RESULTSET
获取SELECT CustomerNo, Title FROM tablename ORDER BY CustomerNo
。
在RESULTSET
的提取代码(循环内)中,将变量分配给CustomerNo
RESULTSET
,并检查下一行。如果您遇到新的CustomerNo
,请创建新的JSON Object
。