DataStax Java for Apache Cassandra 中是否有内置方法将来自 BoundStatement 的结果集映射到使用对象映射 API 构建的域对象 Java 类?
我是一个从 Mapper + Accessor 方法转向 BoundStatement 方法的新手,我想继续使用用对象映射 API 构建的域对象的 Java 类,所以我在移动时对我的 DAO 方法的实现做最小的改变到 BoundStatement。我希望以一种通用的方式来做到这一点,避免遍历每个 ResultSet 行并做一行。为每个域对象一个一个地获取。
在使用 Mapper + Accessor 方法时,Result.all() 做得很好。找不到与 BoundStatement 方法类似的任何内容。
谢谢
个人对战
最佳答案
您可以完成映射 ResultSet
到 com.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/