如何将 Cassandra Row 解析为 Java POJO 类型
How parse Cassandra Row into a Java POJO type
我正在使用 datastax cassandra。我正在尝试将 cassandra 结果解析为 java 类型,并将 return 解析为响应中的 json。
这里每一行都是 VendorToken.class 类型(带有 vendorId、vendorName 字段)
如何使用 jackson ObjectMapper 将一行解析为 VendorToken.class 类型?
ResultSet results = getToken(vendorId);
for(Row row : results) {
System.out.println(row); // Output is: Row[vendorId, testVendorName]
}
或者有没有其他方法可以解析为json?我想 return 以 json 格式发送给用户。请帮忙
只需使用 Object Mapper 即可 - 它不在驱动程序核心中,因此您需要向构建文件添加一个依赖项。之后,您可以直接映射 POJO 类 into/from Cassandra 表。
@Table(name = "t4", keyspace = "test")
public class Test4Data {
@PartitionKey
int id;
@ClusteringColumn
@Column(name = "c")
int clCol;
@Column(name = "t")
String text;
// ... getters/setters, etc.
}
MappingManager manager = new MappingManager(session);
Mapper<Test4Data> mapper = manager.mapper(Test4Data.class);
Test4Data test4Data = mapper.get(0, 1);
// output as JSON, etc.
如果您需要处理多个条目,例如仅按分区键查询等,那么您需要使用 Accessors,如下所示:
@Accessor
public interface UserAccessor {
@Query("SELECT * FROM user")
Result<User> getAll();
}
UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);
Result<User> users = userAccessor.getAll();
然后迭代结果...
P.S。但是您可以直接使用 SELECT JSON ...
(doc, example) 从 Cassandra 获取 JSON,尽管您对 date/time 等内容的格式化方式控制较少。
我正在使用 datastax cassandra。我正在尝试将 cassandra 结果解析为 java 类型,并将 return 解析为响应中的 json。 这里每一行都是 VendorToken.class 类型(带有 vendorId、vendorName 字段) 如何使用 jackson ObjectMapper 将一行解析为 VendorToken.class 类型?
ResultSet results = getToken(vendorId);
for(Row row : results) {
System.out.println(row); // Output is: Row[vendorId, testVendorName]
}
或者有没有其他方法可以解析为json?我想 return 以 json 格式发送给用户。请帮忙
只需使用 Object Mapper 即可 - 它不在驱动程序核心中,因此您需要向构建文件添加一个依赖项。之后,您可以直接映射 POJO 类 into/from Cassandra 表。
@Table(name = "t4", keyspace = "test")
public class Test4Data {
@PartitionKey
int id;
@ClusteringColumn
@Column(name = "c")
int clCol;
@Column(name = "t")
String text;
// ... getters/setters, etc.
}
MappingManager manager = new MappingManager(session);
Mapper<Test4Data> mapper = manager.mapper(Test4Data.class);
Test4Data test4Data = mapper.get(0, 1);
// output as JSON, etc.
如果您需要处理多个条目,例如仅按分区键查询等,那么您需要使用 Accessors,如下所示:
@Accessor
public interface UserAccessor {
@Query("SELECT * FROM user")
Result<User> getAll();
}
UserAccessor userAccessor = manager.createAccessor(UserAccessor.class);
Result<User> users = userAccessor.getAll();
然后迭代结果...
P.S。但是您可以直接使用 SELECT JSON ...
(doc, example) 从 Cassandra 获取 JSON,尽管您对 date/time 等内容的格式化方式控制较少。