使用新的对象映射器
从 DataStax Java Driver 4.1.0 版本开始,有一种不同的方式来映射对象,使用新的对象映射器。
Andy Tolbert 的答案中的代码会像下面的代码一样。
首先,我们需要启用注释处理器。使用 Maven,将以下内容添加到 pom.xml
中:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>com.datastax.oss</groupId>
<artifactId>java-driver-mapper-processor</artifactId>
<version>4.4.0</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
假设有一个名为
posts
的键空间,其中包含一张名为
posts
的表,该表具有列
user_id
、
post_id
和
title
。
我们需要创建一个名为
Post
的类(使用
@CqlName
注解将其映射到表名
posts
),如下所示。
import com.datastax.oss.driver.api.mapper.annotations.CqlName;
import com.datastax.oss.driver.api.mapper.annotations.Entity;
import com.datastax.oss.driver.api.mapper.annotations.PartitionKey;
@Entity
@CqlName("posts")
public class Post {
@PartitionKey
private String postId;
private String title;
private String userId;
}
现在我们创建一个名为
PostDao
的接口,里面包含我们想要执行的查询。
import com.datastax.oss.driver.api.mapper.annotations.Dao;
import com.datastax.oss.driver.api.mapper.annotations.Select;
@Dao
public interface PostDao {
@Select
Post findById(String postId);
}
最后,我们为映射器创建了一个接口。
import com.datastax.oss.driver.api.core.CqlIdentifier;
import com.datastax.oss.driver.api.mapper.annotations.DaoFactory;
import com.datastax.oss.driver.api.mapper.annotations.DaoKeyspace;
import com.datastax.oss.driver.api.mapper.annotations.Mapper;
@Mapper
public interface PostMapper {
@DaoFactory
PostDao postDao(@DaoKeyspace CqlIdentifier keyspace);
}
当我们运行
mvn compile
命令时,注解处理器将生成一个名为
PostMapperBuilder
的类(我们需要它来运行查询)。
CqlSession session = CqlSession.builder().build();
PostMapper postMapper = new PostMapperBuilder(session).build();
PostDao dao = postMapper.postDao(CqlIdentifier.fromCql("posts"));
Post post = dao.findById("a1b2c3d4");
请务必查阅注释处理器配置以及实体创建的文档。