Spring Data JDBC 是 Spring 框架的一部分,它简化了与关系数据库的交互。它提供了一种声明式的方式来访问数据库,而不需要编写大量的 JDBC 代码。不可变记录指的是一旦创建后就不能修改的对象。
Spring Data JDBC 支持多种类型的数据库操作,包括 CRUD 操作、分页、排序等。
适用于需要与关系数据库交互的应用,特别是那些希望减少手动编写 JDBC 代码的应用。
假设我们有一个不可变的 User
类:
public final class User {
private final Long id;
private final String name;
private final String email;
public User(String name, String email) {
this.id = null;
this.name = name;
this.email = email;
}
// Getters (no setters)
}
我们可以创建一个 Repository 接口来处理数据库操作:
import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository<User, Long> {
// 可以在这里添加自定义查询方法
}
Spring Data JDBC 会自动实现基本的 CRUD 操作。对于插入操作,我们只需要创建一个 User
对象并调用 save
方法:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User createUser(String name, String email) {
User newUser = new User(name, email);
return userRepository.save(newUser);
}
}
原因:
解决方法:
import org.springframework.data.annotation.Id;
import org.springframework.data.relational.core.mapping.Table;
@Table("users")
public final class User {
@Id
private final Long id;
private final String name;
private final String email;
public User(String name, String email) {
this.id = null;
this.name = name;
this.email = email;
}
// Getters (no setters)
}
import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository<User, Long> {
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User createUser(String name, String email) {
User newUser = new User(name, email);
return userRepository.save(newUser);
}
}
领取专属 10元无门槛券
手把手带您无忧上云