1.pom:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
2.yml:
spring: data: cassandra: keyspace-name: spacenametest #entity-base-packages: contact-points: 集群地址用逗号分隔 port: 9042 cluster-name: Test Cluster username: cass用户名 password: cass密码 consistency-level: ONE serial-consistency-level: ONE
3.CassandraConfig.java
package com.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.cassandra.config.AbstractCassandraConfiguration;
import org.springframework.data.cassandra.config.CqlSessionFactoryBean;
@Configuration
public class CassandraConfig extends AbstractCassandraConfiguration {
//空间名称
@Value("${spring.data.cassandra.keyspace-name}")
private String keyspaceName;
//节点IP(连接的集群节点IP)
@Value("${spring.data.cassandra.contact-points}")
private String contactPoints;
@Value("${spring.data.cassandra.username}")
private String username;
@Value("${spring.data.cassandra.password}")
private String password;
// @Value("${spring.data.cassandra.session-name}")
// private String sessionName;
public String getKeyspaceName() {
return keyspaceName;
}
public String getContactPoints() {
return contactPoints;
}
// @Override
// public String getSessionName() {
// return sessionName;
// }
// @Override
// public String getLocalDataCenter() {
// return "datacenter1";
// }
@Override
public CqlSessionFactoryBean cassandraSession() {
CqlSessionFactoryBean cqlSessionFactoryBean = super.cassandraSession();
cqlSessionFactoryBean.setPassword(password);
cqlSessionFactoryBean.setUsername(username);
return cqlSessionFactoryBean;
}
}
4.表student列名的映射文件Student.java
package com.cas4.entity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.cassandra.core.cql.PrimaryKeyType;
import org.springframework.data.cassandra.core.mapping.Column;
import org.springframework.data.cassandra.core.mapping.PrimaryKeyColumn;
import org.springframework.data.cassandra.core.mapping.Table;
@Setter
@Getter
@Table(value = "student")
public class Student {
//@PrimaryKeyColumn(value = "id", type = PrimaryKeyType.CLUSTERED)
@PrimaryKeyColumn(value = "id", type = PrimaryKeyType.PARTITIONED)
private int id;
@Column("name")
private String name;
@Column("age")
private int age;
}
4.service调用:
package com.cas4.service;
import com.cas4.entity.Student;
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class ServiceImpl {
@Resource
private CassandraTemplate cassandraTemplate;
//自定义sql语句
public Student findByTenantIdAndSequenceId(String tenantId, String sequenceId) {
String cql = String.format("select * from master_order where tenant_id = '%s' and sequence_id='%s'", tenantId, sequenceId);
Student student = cassandraTemplate.selectOne(cql, Student.class);
return student;
}
public void insert(Student masterOrderDO) {
//插入
cassandraTemplate.insert(masterOrderDO);
//删除
// cassandraTemplate.delete(masterOrderDO);
}
public void find(Student student) {
//插入
List<Student> list = cassandraTemplate.select("select * from spacenametest.student where v='"+ student.getV()+"'", Student.class);
System.out.println("总条数:"+list.size());
}
}
5.cassandra进入建表命令:
bin]# ./cqlsh x.x.x.x 9042 -u cass用户名 -p cass密码
use spacenametest;
CREATE TABLE student(
id int,
name text,
age int,
PRIMARY KEY (id,name) --多个主键
)
或者
CREATE TABLE student(
id int PRIMARY KEY, --一个主键
name text,
age int,
PRIMARY KEY
)