Java直连cassandra datastax
java简单的直连cassandra,引入jar包
<dependency>
<!--<groupId>com.datastax.cassandra</groupId>-->
<!--<artifactId>cassandra-driver-core</artifactId>-->
<!--<version>3.5.0</version>-->
</dependency>
package com.zhou.demo.utils;
import com.datastax.driver.core.*;
import com.datastax.driver.core.querybuilder.QueryBuilder;
/**
* @auther:
* @description:
* @date: 17:46 2019/1/8
*/
public class CassandraSimpleDemo {
public void simpleQuery(Session session) {
// 执行CQL语句
ResultSet rs = session.execute("select * from system_schema.tables");
// 从返回结果中取出第一条结果
Row row = rs.one();
System.out.println("结果----:" + row.getString("keyspace_name"));
}
public void agileQuery(Session session) {
ResultSet rs = session.execute(QueryBuilder.select().from("system_schema", "tables").where(QueryBuilder.eq("keyspace_name", "system_auth")));
Row row = rs.one();
System.out.println("结果----:" + row.getString("table_name"));
}
public static void main(String[] args) {
Cluster cluster = null;
try {
// 创建连接到Cassandra的客户端
cluster = Cluster.builder().addContactPoint("10.201.82.63").build();
Metadata metadata = cluster.getMetadata();
for (Host host : metadata.getAllHosts()) {
System.out.println("host------" + host.getAddress());
}
// 创建用户会话
Session session = cluster.connect();
new CassandraSimpleDemo().agileQuery(session);
} finally {
// 调用cluster变量的close()函数并关闭所有与之关联的链接
if (cluster != null) {
cluster.close();
}
}
}
}
cassandra和spring/springBoot结合
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
</dependency>
配置项(简单配置一个就可以运行,还有一些其他的通过提示自行研究)
spring.data.cassandra.contact-points: ip
通过cassandraTemplate来操作,和entity进行关联,方便操作,其他增删改查按照api来;
类似mongodbTemplate;
String cql = String.format("select * from system_schema.tables");
List<Table> select = cassandraTemplate.select(cql, Table.class);
cassandra和SpringBoot结合可以说很方便了,就不过多赘述;
Spring参考文档和版本 https://spring.io/projects/spring-data-cassandra#learn
// 注解 表
org.springframework.data.cassandra.mapping.Table
// 注解 主键按这个分区
org.springframework.data.cassandra.mapping.PrimaryKey
// 主键 联合主键 示例
//@PrimaryKeyColumn(ordinal = 0, type = PrimaryKeyType.PARTITIONED)
//@PrimaryKeyColumn(ordinal = 1, type = PrimaryKeyType.PARTITIONED)
org.springframework.data.cassandra.mapping.PrimaryKeyColumn
cassandra uuid匹配java.util.UUID
cassandraTemplate.insert(); == merge 即插入又更新,只要PrimaryKey完全匹配
使用datastax可以参考zipkin的项目:zipkin-server和zipkin-dependencies