我尝试使用Collection
和StringBuilder
中包含的对象进行SQL查询。这似乎是一个非常简单的代码:
public String makeQuery(Collection<MyObject> collection) {
logger.info("The size of the collection is {}", collection.size());
StringBuilder queryString = new StringBuilder("INSERT INTO my_table (my_column) VALUES ");
int i = 1;
for (MyObject object : collection) {
queryString.append("('");
queryString.append(object.get...);
queryString.append("')");
if (i == collection.size()) {
queryString.append(";");
} else {
queryString.append(",");
}
i++;
}
logger.info("The size of the collection is {}", collection.size());
return queryString.toString();
}
对我来说,这段代码应该有效,但有时我会得到这样的结果:
INSERT INTO my_table (my_column) VALUES ('a'),('b');('c'),
半结肠不是最后一个字符怎么可能?
修改
我在循环之前和之后添加了日志,并且集合的大小始终相同。
答案 0 :(得分:1)
您可以尝试使用Iterator()并直到hasNext()只做正常的追加。当hasNext()返回false时,只需附加&#39;;&#39;。如果不是,那就不需要额外的了。