使用ResultSetMetaData构建SQL查询

时间:2015-08-06 14:35:51

标签: java sql jdbc

我正在尝试使用ResultSetMetaData来构建SQL查询,以检查表中是否有动态的重复记录。

检查重复记录的查询将如下所示

select 
col1,
col2,
col3
from Table A
group by 
col1,
col2,
col3
having count(*)>1

这些代码大部分是样板文件,我可以使用ResultSetMetaData提取表的所有列。但我不知道如何以优雅的方式做到这一点,并处理最后一个缺少的逗号。

1 个答案:

答案 0 :(得分:0)

在这种情况下,我倾向于使用番石榴图书馆的Joiner。使用joiner,您可以编写类似

的内容
String.format(
  "select %1$s from table %s group by %1$s having count(*) > 1",
  "tablename",
  Joiner.on(",").join("col1","col2","col3")
);

如果您使用的是Java 8,则可以使用String.join代替。

如有必要,请检查表名是否正确引用。