我有下面的方法,它接受两个参数-
userId and attributes Map
属性 Map 将具有列名和列值-
举个例子,如果我在上面的地图中有 5 列,那么也会有 5 个键和 5 个值。
那么我的 SQL 将如下所示 -
String sql = "INSERT INTO PROFILE(userId, colA, colB, colC, colD, colE) VALUES ( ?, ?, ?, ?, ?, ?) ";
同样,我的查询语句看起来像 -
BoundStatement query = prBatchInsert.bind(userId, colAValue, colBValue, colCValue, colDValue, colEValue);
但在某些情况下,属性映射可能有 20 列。所以在此基础上,我需要制作sql和查询语句。
下面的代码几乎假设表格只有四列,这是不正确的。
public void upsertAttributes(final String userId, final Map<String, String> attributes) {
try {
String[] keys = (String[])attributes.keySet().toArray();
String sql = "INSERT INTO PROFILE(userId, "+keys[0]+", "+keys[1]+", "+keys[2]+", "+keys[3]+") VALUES ( ?, ?, ?, ?, ?) ";
BoundStatement query = prBatchInsert.bind(userId, attributes.get(keys[0]), attributes.get(keys[1]), attributes.get(keys[2]), attributes.get(keys[3]));
} catch (Exception e) {
LOG.error(e);
}
}
我怎样才能把上面的方法写得更通用attributes Map
?