将Cassandra BoundStatement的结果集映射/转换/强制转换为使用对象映射API构建的Java类的最有效方法是什么?
在DataStax Java中,Apache Cassandra是否有内置方法将来自BoundStatement的结果集映射到使用对象映射API构建的域对象Java类 我是一个从Mapper+访问器方法转向BoundStatement方法的新手,希望继续使用使用对象映射API构建的域对象的Java类,因此在转向BoundStatement的同时,我对DAO方法的实现做了最小的更改。我希望以一种通用的方式来实现这一点,并避免迭代每个ResultSet行,然后为每个域对象逐个获取 当使用Mapper+访问器方法时,Result.all可以很好地实现这一点。找不到任何类似于BoundStatement方法的内容 谢谢将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
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驱动程序映射模块提供