Cassandra配置

151 阅读1分钟
  1. 引入Maven依赖
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-cassandra</artifactId>
</dependency>
  1. 配置类
@Configuration
public class CassandraConfig extends AbstractCassandraConfiguration {

    @Override
    protected String getKeyspaceName() {
        return "keyspace name";
    }

    @Override
    public CqlSessionFactoryBean cassandraSession() {
        CqlSessionFactoryBean bean = super.cassandraSession();
        bean.setUsername("username");
        bean.setPassword("password");
        bean.setKeyspaceName(getKeyspaceName());
        bean.setContactPoints("contact points");
        bean.setPort(9042);
        bean.setLocalDatacenter("data center");
        return bean;
    }

    // 自定义配置
    @Override
    protected DriverConfigLoaderBuilderConfigurer getDriverConfigLoaderBuilderConfigurer() {
        return builder -> builder
                // 请求超时时间
                .withInt(DefaultDriverOption.REQUEST_TIMEOUT, 10000)
                .build();
    }
}
  1. 使用

CassandraTemplate

SimpleStatement cql = QueryBuilder.selectFrom("table_name")
        .distinct()
        .all()
        .column("id")
        .whereColumn(CqlIdentifier.fromCql("id"))
        .in(QueryBuilder.raw("'c6a46f20-be5e-48a3-ae4c-6c1486c0e0c8'"))
        .build();
List<String> result = temp.select(cql, String.class);

CqlSession

String query = "SELECT * FROM table_name WHERE f1=? AND f2=? AND time >= ? AND time <= ? order by time desc";

PreparedStatement preparedStatement = session.prepare(query);
Statement statement = preparedStatement.bind("A", "B", 1701264920739L, 1801274920739L).setPageSize(10000);

ResultSet rows = session.execute(statement);
for(Row row : rows){
    System.out.println(row.getString("id") + "\t" + row.getLong("time"));
}