java - 将 Cassandra BoundStatement 的 ResultSet 映射/转换/转换为使用对象映射 API 构建的 Java 类的最有效方法是什么?

标签 java cassandra datastax-java-driver

DataStax Java for Apache Cassandra 中是否有内置方法将来自 BoundStatement 的结果集映射到使用对象映射 API 构建的域对象 Java 类?

我是一个从 Mapper + Accessor 方法转向 BoundStatement 方法的新手,我想继续使用用对象映射 API 构建的域对象的 Java 类,所以我在移动时对我的 DAO 方法的实现做最小的改变到 BoundStatement。我希望以一种通用的方式来做到这一点,避免遍历每个 ResultSet 行并做一行。为每个域对象一个一个地获取。

在使用 Mapper + Accessor 方法时,Result.all() 做得很好。找不到与 BoundStatement 方法类似的任何内容。

谢谢

个人对战

最佳答案

您可以完成映射 ResultSetcom.datastax.driver.mapping.Result通过实例化 Mapper为您的对象,然后使用 Mapper.map .这是一个例子,取自 java driver's tests这需要 ResultSet来自定期执行的查询并将其映射到 Result<Post> ,然后遍历结果以访问每个映射的帖子:

MappingManager manager = new MappingManager(session);

Mapper<Post> m = manager.mapper(Post.class);
...
// Retrieve posts with a projection query that only retrieves some of the fields
ResultSet rs = session.execute("select user_id, post_id, title from posts where user_id = " + u1.getUserId());

Result<Post> result = m.map(rs);
for (Post post : result) {
    assertThat(post.getUserId()).isEqualTo(u1.getUserId());
    assertThat(post.getPostId()).isNotNull();
    assertThat(post.getTitle()).isNotNull();

    assertThat(post.getDevice()).isNull();
    assertThat(post.getTags()).isNull();
}

关于java - 将 Cassandra BoundStatement 的 ResultSet 映射/转换/转换为使用对象映射 API 构建的 Java 类的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34701817/

相关文章:

java - HttpURLConnection 和获取 ASPX 页面

cassandra - Cassandra 的墓碑物理位置

cassandra - 如何在 Cassandra 中维护主键的最后 N 个版本?

Cassandra 通过网络执行命令

Cassandra:插入 timeuuid 错误

java - 如何从 cassandra 中的行获取文本集

java - 在迭代列表时将元素添加到列表中。 ( java )

java - Nimbus Look&Feel refresh Painter

java - 使用不必要的条件更快地编码?