Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Cassandra BoundStatement的结果集映射/转换/强制转换为使用对象映射API构建的Java类的最有效方法是什么?_Java_Cassandra_Datastax Java Driver - Fatal编程技术网

将Cassandra BoundStatement的结果集映射/转换/强制转换为使用对象映射API构建的Java类的最有效方法是什么?

将Cassandra BoundStatement的结果集映射/转换/强制转换为使用对象映射API构建的Java类的最有效方法是什么?,java,cassandra,datastax-java-driver,Java,Cassandra,Datastax Java Driver,在DataStax Java中,Apache Cassandra是否有内置方法将来自BoundStatement的结果集映射到使用对象映射API构建的域对象Java类 我是一个从Mapper+访问器方法转向BoundStatement方法的新手,希望继续使用使用对象映射API构建的域对象的Java类,因此在转向BoundStatement的同时,我对DAO方法的实现做了最小的更改。我希望以一种通用的方式来实现这一点,并避免迭代每个ResultSet行,然后为每个域对象逐个获取 当使用Mapper

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

我是一个从Mapper+访问器方法转向BoundStatement方法的新手,希望继续使用使用对象映射API构建的域对象的Java类,因此在转向BoundStatement的同时,我对DAO方法的实现做了最小的更改。我希望以一种通用的方式来实现这一点,并避免迭代每个ResultSet行,然后为每个域对象逐个获取

当使用Mapper+访问器方法时,Result.all可以很好地实现这一点。找不到任何类似于BoundStatement方法的内容

谢谢


IPVP

您可以通过为对象实例化映射器,然后使用来完成将ResultSet映射到com.datasax.driver.mapping.Result。下面是一个示例,取自,它从定期执行的查询中获取一个ResultSet并将其映射到一个结果,然后迭代该结果以访问每个映射的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();
}

从DataStax Java驱动程序的版本4.1.0开始,有一种不同的方法使用映射对象

安迪·托尔伯特答案中的代码类似于下面的代码

首先,我们需要启用注释处理器。使用Maven,将以下内容添加到pom.xml中:


等等。

我正在使用datastax cassadra java驱动程序3.0.2,但它没有MappingManager类。上述示例是否也适用于驱动程序版本3.x?映射器由cassandra驱动程序映射模块提供