0

这是我使用 jdbc.webshopProducts 完成的查询是地图。

StringBuilder queryString=new StringBuilder();
            queryString.append(" select cpm.name,cpm.catalogueprice,cpm.catalogueno ");
            queryString.append(" from customer_product_master cpm ");
            queryString.append(" where cpm.catalogueno in (?) ");
            stmt=con.prepareStatement(queryString.toString());
            stmt.setString(1,StringUtils.join(webshopProducts.keySet(),','));
rs=stmt.executeQuery();
            webshopProductList=new ArrayList<WebshopProductVO>();
            while(rs.next()){
                WebshopProductVO webshopProduct=new WebshopProductVO();
                webshopProduct.setArticleno(rs.getInt("catalogueno"));
                webshopProduct.setName(rs.getString("name"));
                webshopProduct.setPrice(rs.getFloat("catalogueprice"));
                webshopProduct.setQuantity(webshopProducts.get(rs.getInt("catalogueno")));
                webshopProduct.setSum(rs.getFloat("catalogueprice")*webshopProducts.get(rs.getInt("catalogueno")));
                webshopProductList.add(webshopProduct);
            }

我使用 StringUtils.join(webshopProducts.keySet(),',') 生成一个逗号分隔的整数列表。我面临的问题是,当地图中有多个值时,只有一个 WebshopProductVO 被添加到webshopProductList 即使有很多。

4

1 回答 1

1

不确定,您使用的是哪个数据库。但你应该需要的数量?等于您传递的值的数量。

假设您有两个 in 子句的值,那么它应该是:-

where cpm.catalogueno in (?,?)

你应该设置相同数量的字符串。

  stmt.setString(1,"somevalue");
  stmt.setString(2,"somevalue2");

您需要在两个语句的键集上编写循环以附加?并设置字符串参数

于 2014-12-07T17:06:08.093 回答