我有一个基于id的数据库返回记录的方法。现在我需要获取1000条记录的记录,我觉得手动编写in子句中的所有id都不是一个好习惯。有没有一个工具可以粘贴id,它在('123','456'等中给我这个id?
我不能手动编写我自己的所有ID。业务提供excel中的id,它们的数量非常大。有没有办法实现这个目标?
我的方法
@Override
public List<NYProgramTO> getLatestNYData() throws Exception {
String query = "SELECT REQ_XMl, SESSIONID, EXPIRATION_DATE, QUOTE_DATE, POLICY_EFFECTIVE_DATE, TARGET_CREATED, RATING_TRANSACTION_ID, SOURCE_LASTMODIFIED FROM dbo.XML_SESSIONS with (nolock) WHERE XML_SESSIONS.LOB = 'PersonalAuto' AND XML_SESSIONS.RATING_STATE = 'NY' AND XML_SESSIONS.ID IN ('72742212', '71289432') ORDER BY XML_SESSIONS.SOURCE_LASTMODIFIED DESC";
return this.sourceJdbcTemplate.query(query, (rs, rowNum) -> {
NYProgramTO to = new NYProgramTO();
to.setRequestXML(rs.getString("REQ_XML"));
to.setSessionId(rs.getString("SESSIONID"));
to.setExpirationDate(rs.getDate("EXPIRATION_DATE"));
to.setQuoteDate(rs.getString("QUOTE_DATE"));
to.setEffectiveDate(rs.getDate("POLICY_EFFECTIVE_DATE"));
to.setCreatedDate(rs.getDate("TARGET_CREATED"));
to.setRatingTransactionID(rs.getString("RATING_TRANSACTION_ID"));
to.setSourceLastModified(rs.getTimestamp("SOURCE_LASTMODIFIED"));
return to;
});
}
由于
答案 0 :(得分:0)
如果我理解错了,请纠正我。 如果您正在寻找可以为您提供以逗号分隔的列的连接值的内容,那么您应该使用excel。 在那里,您可以将数据粘贴到列中,并应用excel中可用的连接功能来获得结果。 您可以参考This link
答案 1 :(得分:0)
听起来像一个相当简单的java解决方案。为什么不编写一个将id作为字符串参数的java方法,并以您需要的方式返回一个String格式。
鉴于你有一个长字符序列/字符串中的所有id,你可以简单地执行此操作:
public String toSQLIds(String pRawIds){
String[] ids = pRawIds.split(Pattern.quote("SEPARATOR"));
StringBuilder builder = new StringBuilder();
builder.append("(");
for(int i = 0; i < ids.length; i++){
builder.append("'").append(ids[i]).append("'");
if(i < ids.length-1){
builder.append(", ");
}
}
builder.append(")");
return builder.toString();
}
这样的事情。当然,您需要使用正确的分隔符来成功分割ID并按照您需要的方式对其进行格式化。用你的id运行一次并将其粘贴到你的sql中。