我最近开始使用Cassandra database
。我试图将一些数据插入我创建的Column Family
之一。
以下是我尝试插入Cassandra数据库的代码。
就我而言,我的专栏系列中有20 columns
左右,这意味着我需要添加以下行
mutator.newColumn("Column Name", "Column Value");
二十次对我来说很难看。有什么办法,我可以通过使用反射或其他方式简化下面的方法,这样如果我有超过20列,我不应该继续在我的下面的代码中添加额外的行。
for (int userId = id; userId < id + noOfTasks; userId++) {
Mutator mutator = Pelops.createMutator(thrift_connection_pool);
mutator.writeColumns(column_family, String.valueOf(userId),
mutator.newColumnList(
mutator.newColumn("a_account", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),
mutator.newColumn("a_advertising", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),
mutator.newColumn("a_avg_selling_price_main_cats", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),
mutator.newColumn("a_cat_and_keyword_rules", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),
mutator.newColumn("a_csa_categories_purchased", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),
mutator.newColumn("a_customer_service", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),
mutator.newColumn("a_demographic", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),
mutator.newColumn("a_favorite_searches", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),
mutator.newColumn("a_favorite_sellers", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"),
mutator.newColumn("a_financial", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}")
mutator.newColumn(some othe column, its value)
.....
.....
.....
));
mutator.execute(ConsistencyLevel.ONE);
}
任何简化上述方法的帮助对我都有很大帮助。可能我可以在这里使用反射?有什么想法吗?
答案 0 :(得分:1)
您可以预定义ColumnList。假设您在名为“map”的变量中传入名称和字符串版本值的映射。您的代码可能如下所示:
Mutator mutator = Pelops.createMutator(thrift_connection_pool);
ArrayList<Column> columnList = new ArrayList<Column>();
for (Map.Entry<String, String> entry : map.entrySet()) {
columnList.add(mutator.newColumn(entry.getKey(), entry.getValue()));
}
mutator.writeColumns(column_family, String.valueOf(userId), columnList);