Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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 在列表中映射,要检索所有映射并将其值存储到另一个列表中_Java_Spring - Fatal编程技术网

Java 在列表中映射,要检索所有映射并将其值存储到另一个列表中

Java 在列表中映射,要检索所有映射并将其值存储到另一个列表中,java,spring,Java,Spring,我在列表中有jdbcTemplate返回的记录,我只想获取Map,然后我想在另一个列表中添加V,并将该列表返回给controller并显示在jsp中 public List<Object> searchByempCodeV2(String tabSuffix, String empCode, String yyyyMm) { List<Object> targetList = null; MapSqlParameterSource param =

我在列表中有jdbcTemplate返回的记录,我只想获取Map,然后我想在另一个列表中添加V,并将该列表返回给controller并显示在jsp中

    public List<Object> searchByempCodeV2(String tabSuffix, String empCode, String yyyyMm) {
    List<Object> targetList = null;
    MapSqlParameterSource param = new MapSqlParameterSource();
    String tableName = "Salary_detail_report_082018";
    String query = "SELECT "
            + " DISTINCT PAY_CODE, "
            + " PAY_CODE_DESC, "
            + " AMOUNT, "
            + " row_number() over (Order by EMP_CODE ) AS ROW_NUM "
            + " FROM " + tableName
            + " WHERE EMP_CODE=" + empCode
            + " AND YYYYMM=" + yyyyMm
            + " AND PAY_CODE NOT IN (997,998,999) "
            + " ORDER BY PAY_CODE ASC ";
    List<Map<String, Object>> employees = queryForList(query);
    if (employees != null && !employees.isEmpty()) {
        for (Map<String, Object> employee : employees) {
            targetList = new ArrayList<>(employee.values());

        }
    }
    return targetList;
}
}


现在我的targetList只返回了最后一条记录,请首先为我提供建议创建列表实例:

List<Collection<Object>> targetList = new ArrayList<>();
然后在迭代过程中填写列表:

    for (Map<String, Object> employee : employees) {
        targetList.add(employee.values());
    }
请参见差异:添加调用而不是赋值by=


因此,在最后您将有一个列表。

请不要通过将字符串连接在一起来创建SQL查询。您应该始终使用参数化查询,否则SQL注入会带来严重的安全风险。什么是queryForList,为什么它会返回映射?谢谢,伙计,但这是测试阶段,我们还没有投入生产,这也将在代码优化阶段实现,请告诉我确切的问题。@ScaryWombat queryforlist属于JdbcTemplate API,它返回映射列表没有必要测试employee是否为空,因为for循环不会在空列表上迭代。param似乎没有被使用。