Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC结果集数据到HashMap_Java_Mysql_Jakarta Ee_Jdbc_Jdbctemplate - Fatal编程技术网

Java JDBC结果集数据到HashMap

Java JDBC结果集数据到HashMap,java,mysql,jakarta-ee,jdbc,jdbctemplate,Java,Mysql,Jakarta Ee,Jdbc,Jdbctemplate,我无法将数据从ResultSet设置为HashMap 我的查询返回4条记录,但HashMap只保存最后2条记录。但是,在循环中,我可以打印4条记录数据。 有人能帮忙吗 这是我的密码: workOrderMap=new HashMap<String, Integer>(); Statement statement = serviceconnection.createStatement(); ResultSet rs = statement.executeQuery("SELECT O

我无法将数据从ResultSet设置为HashMap

我的查询返回4条记录,但HashMap只保存最后2条记录。但是,在循环中,我可以打印4条记录数据。 有人能帮忙吗

这是我的密码:

workOrderMap=new HashMap<String, Integer>();

Statement statement = serviceconnection.createStatement();
ResultSet rs = statement.executeQuery("SELECT OPERATION,WORKORDERID FROM History WHERE OPERATION='CREATE'OR OPERATION='UPDATE'");
workOrderMap=new HashMap<String, Integer>();

while (rs.next()) {
    workOrderMap.put(rs.getString("OPERATION"), rs.getInt("WORKORDERID"));
    System.out.println(rs.getString("OPERATION")); // loops 4 times
}

System.out.println("List of Workorder id's" + workOrderMap.size()); // prints 2
workOrderMap=newhashmap();
语句Statement=serviceconnection.createStatement();
ResultSet rs=statement.executeQuery(“选择操作,从操作='CREATE'或操作='UPDATE'所在的历史记录中删除工作记录”);
workOrderMap=新的HashMap();
while(rs.next()){
workOrderMap.put(rs.getString(“操作”)、rs.getInt(“WORKORDERID”);
System.out.println(rs.getString(“操作”);//循环4次
}
System.out.println(“工单id列表”+workOrderMap.size());//印刷品2

rs.getString(“操作”)
返回的值只有两个不同

考虑到
WHERE
子句只允许有2个值,这并不奇怪:

WHERE OPERATION='CREATE' OR OPERATION='UPDATE'
Map
中,键是唯一的,因此使用相同的键值调用
put()
将覆盖前面的值


将行集转换为POJO时,我更喜欢创建一个
列表
——列表中的每个元素都是一行,关联映射中的每个条目都是列名及其值


仅供参考,您的
WHERE
子句可以更优雅地写成:

WHERE OPERATION IN ('CREATE', 'UPDATE')

因为键是相同的,所以在hashmap中只能看到2个值

范例

Map<String,Integer>  workOrderMap=new HashMap<String, Integer>();

workOrderMap.put("S", 1);
workOrderMap.put("S", 1);
workOrderMap.put("S2", 1);

System.out.println(workOrderMap.size());
Map workOrderMap=newhashmap();
工作流程图放置(“S”,1);
工作流程图放置(“S”,1);
工作指令映射放置(“S2”,1);
System.out.println(workOrderMap.size());
产出:2