我有一个从列表A中的查询返回的字符串列表。
我正在尝试使用String Utils.join将列表中的值组合为以逗号和引号分隔的字符串。但它没有按预期工作。
abcList中的值 - [abc,cde,fgh]
abcList.addAll(jdbcTemplate.queryForList(abcSql, String.class));
String abc= StringUtils.join(abcList, "','");
abc = "'" +abc+ "'";
预期输出 - ' abc',' cde',' fgh'
实际输出 - ' abc,cde,fgh'
我不确定我在这里做错了什么,因为我想通过" IN"将字符串abc中的值传递给查询。条件。
答案 0 :(得分:1)
作为替代方案,您也可以使用stream.Collectors.joining
List<String> myList = Arrays.asList("abc","def","ghi");
String joined = myList.stream().collect(Collectors.joining("','", "'", "'"));
System.out.println(joined);
答案 1 :(得分:1)
如果您使用的是Java 8,则可以使用本机方法来连接字符串。
List<String> list = <get a list of strings somehow>;
String joinedString = String.join("','", list);
正如JDBC查询的提示......您应该使用命名参数在查询中插入值,而不是手动构造查询字符串。
有关示例,请参阅this SO帖子。