📅  最后修改于: 2023-12-03 15:20:12.577000             🧑  作者: Mango
Spring Boot 是一种微服务框架,可以让你更快速、更容易地构建基于 Spring 的应用程序。JpaRepository 则是 Spring Data 提供的一个基于 JPA(Java Persistence API)技术的数据访问对象(DAO)框架,可帮助您更轻松地处理相关数据。
在使用 Spring Boot JPA 前,您需要先添加 spring-boot-starter-data-jpa
依赖。这个起步器包含了我们需要的 JPA,Hibernate 以及其他数据库驱动包。
pom.xml:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
接下来,您需要创建一个实体类以映射数据库表,并创建一个 repository
类,以定义读写该实体类的操作。
假设我们要存储图书信息,那么我们可以创建以下实体类:
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String title;
private String author;
private String description;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
在这个实体类中,我们使用 @Entity
和 @Table
注释将类映射到数据库表。我们还使用 @Id
和 @GeneratedValue
注解定义主键,以及属性和 setter/getter 方法。
我们的实体类已准备好,接下来我们需要创建一个 repository
类,该类将充当我们的 DAO 对象,使我们能够读写图书信息。
@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
}
在这个 repository 类中,我们使用 @Repository
注解将它标记为数据访问对象,通过使用 JpaRepository
,我们可以从中继承常见适用于所有实体的即时 CRUD 操作。在这里,我们的 BookRepository
接口扩展了 JpaRepository<Book, Long>
,其中第二个参数指定主键的类型。
我们现在已经创建了实体类和 repository,现在我们需要对 repository 进行包装,以便在一个服务中使用。我们可以创建一个 BookService
类:
@Service
public class BookService {
@Autowired
private BookRepository bookRepository;
public List<Book> getAll() {
return bookRepository.findAll();
}
public Optional<Book> getById(Long id) {
return bookRepository.findById(id);
}
public Book create(Book book) {
return bookRepository.save(book);
}
public Book update(Long id, Book book) throws Exception {
Optional<Book> optionalBook = bookRepository.findById(id);
if (!optionalBook.isPresent()) {
throw new Exception("Book not found with id: " + id);
}
book.setId(id);
return bookRepository.save(book);
}
public void deleteById(Long id) {
bookRepository.deleteById(id);
}
}
在这个服务类中,我们使用 @Service
注解将它标记为服务类。我们使用 @Autowired
注解自动装配我们的 BookRepository
对象。BookService
类包装了 repository,以使其可以在您的应用程序的其他部分中使用。在这个示例中,我们为读取、创建、更新和删除操作提供了方法。
Spring Boot JpaRepository 是一个非常有用的 DAO 框架,在处理数据库操作时可以提高效率和可读性。通过创建这样的类,您可以专注于业务逻辑,而不用担心复杂的 SQL 语句。以上示例展示了如何使用 Spring Boot 和 JpaRepository 创建一个简单的 DAO 对象,使用 Hibernate 进行数据库操作。