目录
add_book.html搭建新增图书界面,通过添加的超链接进入界面
updata_book.html搭建更新图书界面,通过添加的超链接进入界面
query_book.html中设置了超链接跳转到查询图书的界面中
最终效果图
前言:springboot是什么
Spring Boot简化了开发人员对Spring框架的应用程序的搭建和配置过程,提供了一套简单易用的开发工具和规范,使开发人员能够更专注于业务逻辑的开发,而无需过多关注繁琐的配置和细节。
一、实现类和接口类
在Book中设置图书的属性
package com.lzzy.project.model;
import jakarta.persistence.*;
import lombok.Data;
@Data
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "name")
private String name;
@Column(name = "writer")
private String writer;
@Column(name = "state")
private String state;
@Column(name = "price")
private int price;
}
BookRepository接口
JpaRepository是Spring Data JPA框架提供的一个接口,它提供了许多用于操作数据库的方法,例如保存数据、查询数据、删除数据等。通过继承JpaRepository接口,BookRepository就可以使用这些方法来对Book实体对象进行持久化操作。
并且设置了模糊查询。
package com.lzzy.project.repository;
import com.lzzy.project.model.Book;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
@Query("SELECT b FROM Book b WHERE b.name LIKE %:keyword%")
List<Book> findByNameContaining(@Param("keyword") String keyword);
}
BookServiceImpl实现类
在BookServiceImpl中通过这些方法的实现,BookServiceImpl类成为了一个BookService接口的实现类,可以提供对书籍的保存、查询和删除等服务操作。
package com.lzzy.project.service;
import com.lzzy.project.model.Book;
import com.lzzy.project.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookRepository bookRepository;
@Override
public void saveBook(Book book) {this.bookRepository.save(book);}
@Override
public List<Book> getAllBook() {return bookRepository.findAll();}
@Override
public void deleteBookById(long id) {this.bookRepository.deleteById(id);}
//获取指定图书的id
@Override
public Book getBookById(long id){
//调用数据访问层查找指定ID的图书,返回Optional对象
Optional< Book > optional = bookRepository.findById(id);
Book book = null;
//如果存在指定id的图书
if (optional.isPresent()) {
//从Optional对象中获取图书对象
book = optional.get();
} else {
//否则抛出运行时异常
throw new RuntimeException(" :: " + id);
}
return book;
}
@Override
public Page<Book> findPaginated(int pageNo, int pageSize, String sortField, String sortDirection) {
//设置排序参数,升序ASC/降序DESC?
Sort sort = sortDirection.equalsIgnoreCase(Sort.Direction.ASC.name())
? Sort.by(sortField).ascending()
: Sort.by(sortField).descending();
//根据页号/每页记录数/排