我有一个字符串列表,该列表是从列表 A 中的查询返回的。
我正在尝试使用字符串 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"
不确定我在这里做错了什么,因为我想将字符串 abc 中的值传递到带有"IN"条件的查询中。
作为替代方案,您也可以使用stream.Collectors.joining
List<String> myList = Arrays.asList("abc","def","ghi");
String joined = myList.stream().collect(Collectors.joining("','", "'", "'"));
System.out.println(joined);
如果您使用的是 Java 8,则可以使用本机方法来连接字符串。
List<String> list = <get a list of strings somehow>;
String joinedString = String.join("','", list);
请参阅 String.join javadoc
就像 JDBC 查询的提示一样...应使用命名参数在查询中插入值,而不是手动构造查询字符串。
有关示例,请参阅此SO帖子。