字符串是A,B 后台要把字符串写到sql里,所以字符串要转为'A','B' 查询用的JdbcTemplate

前台传的字符串是A,B 后台要把字符串写到sql里,所以字符串要转为'A','B' sql写成in('A','B'),怎么转?查询用的JdbcTemplate,或者还有什么比较好的方案嘛,小弟感激不尽

qq_39599516
qq_39599516 StringBuffer sb = new StringBuffer(); sb.append("'"); String all = stationLevl.replaceAll(",", "','"); sb.append(all); sb.append("'");
大约一年之前 回复

4个回答

google的CharMatcher和Strings工具类

public List<TypePriceInfo> listTypePriceByProductIds(List<Long> productIds) {
        String sqlInParam = CharMatcher.is(',').trimFrom(Strings.repeat("?,", productIds.size()));
        String sql = BASE_TYPE_PRICE_INFO_SQL + "where p.product_id in(" + sqlInParam + ")";
        List<TypePriceInfo> priceInfos = jdbcTemplate.query(sql, productIds.toArray(), typePriceInfoRowMapper);
        if (priceInfos == null) {
            return Collections.emptyList();
        } else {
            return priceInfos;
        }
}

qq_39599516
qq_39599516 虽然我已经有更好的方法了,但是还是感谢你的回答,采纳了,我解决的方法写在下面了
大约一年之前 回复

使用NamedParameterJdbcTemplate访问一批数据

public List<Type> queryByFundid(int fundId) { 
     String sql = "select * from employee where id in (:ids);

    List<String> ids = new ArrayList<>();
    ids.add('3');
    ids.add('32');
    args.put("ids", ids);
    NamedParameterJdbcTemplate givenParamJdbcTemp = new NamedParameterJdbcTemplate(jdbcTemplate);
    List<Type> data = givenParamJdbcTemp.queryForList(sql, args, Type.class);
    return data;
}
qq_39599516
qq_39599516 你这个方法不错 学到了 谢谢
大约一年之前 回复
qq_39599516
qq_39599516 肯定不是固定的啊,而且长度也不固定
大约一年之前 回复
    public static void main(String[] args) {
        String sql = "你的sql in ";
        String str = "A,B";
        String[] split = str.split(",");
        String inCondition = "(";
        for (String string : split) {
            inCondition += "'"+string+"',";
        }
        inCondition = inCondition.substring(0,inCondition.length()-1)+")";
        sql += inCondition;
        System.out.println(sql);
    }
qq_39599516
qq_39599516 这个似乎是可行的,但是还有没有更加好一点的方法呀,我目前想到一个更简洁的方法 就是把,替换成',' 然后前后加',JdbcTemplate有没有提供这种方法呢,感谢你的回答
大约一年之前 回复

其实这个根本就不用转的吧,sql是可以识别的呀

qq_39599516
qq_39599516 当然要转 不转直接报错 JdbcTemplate好像就是这样子 我也没怎么用过 如果直接写sql的话条件里面是数字类型就不用转,可能小弟才疏学浅,方法弄错了
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问