2つのパラメーターを受け入れる以下のメソッドがあります-
userId and attributes 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とクエリステートメントを作成する必要があります。
以下は、テーブルに 4 つの列しかないことをほぼ想定しているコードですが、これは正しくありません。
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
ますか?