如何在booklist页面上添加删除修改操作
时间: 2023-12-24 14:03:04 浏览: 91
好的,如果您想在 BookList 页面上添加删除和修改操作,可以参考下面的示例代码:
1. 在 BookMapper 类中添加一个 `deleteById` 方法和一个 `update` 方法,用于删除和更新数据库中的图书信息。示例代码如下:
```java
@Mapper
public interface BookMapper {
@Delete("DELETE FROM book WHERE id = #{id}")
void deleteById(Long id);
@Update("UPDATE book SET title = #{title}, author = #{author}, publisher = #{publisher}, isbn = #{isbn} WHERE id = #{id}")
void update(Book book);
}
```
2. 在 BookService 类中添加一个 `deleteBook` 方法和一个 `updateBook` 方法,用于删除和更新数据库中的图书信息。该方法需要调用 BookMapper 中的 `deleteById` 和 `update` 方法分别实现删除和更新操作。示例代码如下:
```java
@Service
public class BookService {
@Autowired
private BookMapper bookMapper;
public void deleteBook(Long id) {
bookMapper.deleteById(id);
}
public void updateBook(Book book) {
bookMapper.update(book);
}
}
```
3. 在 books.html 页面中的图书列表中添加两个链接,用于删除和修改图书信息。示例代码如下:
```html
<table>
<thead>
<tr>
<th>Title</th>
<th>Author</th>
<th>Publisher</th>
<th>ISBN</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr th:each="book : ${books}">
<td th:text="${book.title}"></td>
<td th:text="${book.author}"></td>
<td th:text="${book.publisher}"></td>
<td th:text="${book.isbn}"></td>
<td>
<a th:href="@{/books/{id}/edit(id=${book.id})}">Edit</a>
<a th:href="@{/books/{id}/delete(id=${book.id})}" onclick="return confirm('Are you sure you want to delete this book?')">Delete</a>
</td>
</tr>
</tbody>
</table>
```
4. 在 Controller 类中添加两个处理 GET 请求的方法,用于显示修改图书信息的表单页面和处理删除图书信息的请求。示例代码如下:
```java
@GetMapping("/books/{id}/edit")
public String showEditBookForm(@PathVariable("id") Long id, Model model) {
Book book = bookRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid book ID:" + id));
model.addAttribute("book", book);
return "edit-book";
}
@GetMapping("/books/{id}/delete")
public String deleteBook(@PathVariable("id") Long id) {
bookRepository.deleteById(id);
return "redirect:/books";
}
```
5. 在 templates 目录下创建 edit-book.html 文件,该文件用于显示修改图书信息的表单页面。示例代码如下:
```html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Edit Book</title>
</head>
<body>
<h1>Edit Book</h1>
<form th:action="@{/books}" th:object="${book}" method="post">
<input type="hidden" th:field="*{id}"/>
<label for="title">Title:</label>
<input type="text" th:field="*{title}" required/>
<label for="author">Author:</label>
<input type="text" th:field="*{author}" required/>
<label for="publisher">Publisher:</label>
<input type="text" th:field="*{publisher}" required/>
<label for="isbn">ISBN:</label>
<input type="text" th:field="*{isbn}" required/>
<button type="submit">Save</button>
</form>
</body>
</html>
```
6. 在 Controller 类中添加一个处理 POST 请求的方法,用于处理修改图书信息的表单提交操作。该方法需要调用 BookService 中的 `updateBook` 方法将修改后的图书信息保存到数据库中。示例代码如下:
```java
@PostMapping("/books/{id}/edit")
public String updateBook(@PathVariable("id") Long id, @ModelAttribute("book") Book book, BindingResult result) {
if (result.hasErrors()) {
book.setId(id);
return "edit-book";
}
bookService.updateBook(book);
return "redirect:/books";
}
```
这样,当用户点击删除链接时,会调用 deleteBook() 方法将指定的图书信息从数据库中删除。当用户点击修改链接时,会跳转到 edit-book.html 页面,用户可以修改图书信息后点击保存按钮,就会调用 updateBook() 方法将修改后的图书信息保存到数据库中。保存完成后,用户会被重定向到图书列表页面。同时需要注意的是,在 Controller 类中需要注入 BookService 对象,并且需要使用 @ModelAttribute 注解来将表单提交的图书信息绑定到 Book 对象中。
阅读全文