开发者社区 问答 正文

Spring jdbctemplate 中查询语句有IN 怎么传参数?

带IN的SQL语句

例如:SELECT * FROM CSM_MENU WHERE MENU_ID IN (?)  怎么传递参数?
@Test
    public void testIn(){
        NamedParameterJdbcTemplate namedParameterJdbcTemplate =   
                new NamedParameterJdbcTemplate(jdbcTemplate);  
        String s = "1,2,3,4";
        MapSqlParameterSource parameters = new MapSqlParameterSource(); 
        parameters.addValue("menuId",Arrays.asList(s));
        List<Map<String,Object>> list = namedParameterJdbcTemplate.queryForList("SELECT * FROM CSM_MENU WHERE MENU_ID IN (:menuId)",parameters);
        System.out.println(list.size());
    }

展开
收起
小旋风柴进 2016-03-03 15:41:12 6977 分享 版权
1 条回答
写回答
取消 提交回答
  • 其实不能传入用逗号隔开的String s ="1,2,3,4";而应该是把这个转成list,String s =[1,2,3,4];

    public static List asList(String ids) {
    List idList = new LinkedList();
    if (StringUtil.isNotEmpty(ids)) {
    String idGroup[] = ids.split(",");
    for (String id : idGroup) {
    idList.add(id);
    }
    }
    return idList;
    }
    paramMap.put("goodsIds", DataUtil.asList(goodsIds));这样子就可以了

    2019-07-17 18:51:31
    赞同 展开评论
问答分类:
问答标签:
问答地址: