开发者社区> 问答> 正文

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());
    }

展开
收起
a123456678 2016-03-19 09:49:58 5439 0
1 条回答
写回答
取消 提交回答
  • 其实不能传入用逗号隔开的String s ="1,2,3,4";而应该是把这个转成list,String s =[1,2,3,4];

    public static List<String> asList(String ids) {
    List<String> idList = new LinkedList<String>();
    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 19:07:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多