在 Spring 项目里实现对 Cassandra 的操作,可借助 Spring Data Cassandra 来简化开发流程。下面为你详细介绍实现步骤:
1. 添加依赖
若使用 Maven 项目,需在 pom.xml
里添加如下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
</dependencies>
2. 配置 Cassandra
在 application.properties
或者 application.yml
中配置 Cassandra 的连接信息。
application.properties
示例
spring.data.cassandra.contact-points=localhost
spring.data.cassandra.port=9042
spring.data.cassandra.keyspace-name=your_keyspace_name
spring.data.cassandra.username=cassandra
spring.data.cassandra.password=cassandra
application.yml
示例
spring:
data:
cassandra:
contact-points: localhost
port: 9042
keyspace-name: your_keyspace_name
username: cassandra
password: cassandra
3. 创建实体类
构建与 Cassandra 表对应的实体类,并且使用注解来映射字段。
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@Table("your_table_name")
public class User {
@PrimaryKey
private String id;
private String name;
private int age;
// 构造函数、getter 和 setter 方法
public User() {
}
public User(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
4. 创建 Repository 接口
创建一个继承自 CassandraRepository
的接口,以此来实现对 Cassandra 的基本 CRUD 操作。
import org.springframework.data.cassandra.repository.CassandraRepository;
public interface UserRepository extends CassandraRepository<User, String> {
}
5. 使用 Repository 进行操作
在服务类或者控制器中使用 UserRepository
来进行对 Cassandra 的操作。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public void saveUser(User user) {
userRepository.save(user);
}
public User getUserById(String id) {
return userRepository.findById(id).orElse(null);
}
public List<User> getAllUsers() {
return userRepository.findAll();
}
public void deleteUser(String id) {
userRepository.deleteById(id);
}
}
6. 测试操作
在控制器中测试上述操作:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping
public void saveUser(@RequestBody User user) {
userService.saveUser(user);
}
@GetMapping("/{id}")
public User getUserById(@PathVariable String id) {
return userService.getUserById(id);
}
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable String id) {
userService.deleteUser(id);
}
}
综上所述,在 Spring 项目里实现对 Cassandra 的操作,需要添加依赖、配置 Cassandra、创建实体类和 Repository 接口,接着在服务类和控制器中运用 Repository 进行操作。
下面是完整的代码示例,我将以 doubaocanvas
的形式展示给你:
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
</dependencies>
application.properties
spring.data.cassandra.contact-points=localhost
spring.data.cassandra.port=9042
spring.data.cassandra.keyspace-name=your_keyspace_name
spring.data.cassandra.username=cassandra
spring.data.cassandra.password=cassandra
User.java
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@Table("your_table_name")
public class User {
@PrimaryKey
private String id;
private String name;
private int age;
// 构造函数、getter 和 setter 方法
public User() {
}
public User(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
UserController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping
public void saveUser(@RequestBody User user) {
userService.saveUser(user);
}
@GetMapping("/{id}")
public User getUserById(@PathVariable String id) {
return userService.getUserById(id);
}
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable String id) {
userService.deleteUser(id);
}
}
UserRepository.java
import org.springframework.data.cassandra.repository.CassandraRepository;
public interface UserRepository extends CassandraRepository<User, String> {
}
UserService.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public void saveUser(User user) {
userRepository.save(user);
}
public User getUserById(String id) {
return userRepository.findById(id).orElse(null);
}
public List<User> getAllUsers() {
return userRepository.findAll();
}
public void deleteUser(String id) {
userRepository.deleteById(id);
}
}