【Spring Boot】データベースのデータの削除機能を実装する

Java

今回はSpring Bootでデータベースのデータを削除する、削除機能を実装していきます。

処理の流れとしては以下のようになります。

  1. 画面でリンクが押されたときに、削除するデータのidをサーバーに送る
  2. サーバーでidを受け取り、データベースからデータを削除する

今回のそれほど複雑な処理を行う必要はありません。

bookList.html

bookList.htmlではデータベースの情報を一覧表示しています。

BookController.javaにデータを削除するリクエストを送るためのリンクを付け加えます。

<td><a th:href="@{/book-delete(id=*{id})}">削除</a></td>

一覧表示に関してはこちらの記事を参考にしてみてください。

bookList.htmlは次のようになります。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>本の一覧表示</title>
</head>
<body>
	<table>
		<tr th:each="book : ${bookList}" th:object="${book}">
			<td th:text="*{id}"></td>
			<td th:text="*{title}"></td>
			<td th:text="*{price}"></td>
			<td><a th:href="@{/book-edit(id=*{id})}">編集</a></td>
			<td><a th:href="@{/book-delete(id=*{id})}">削除</a></td>
		</tr>
	</table>
	<a th:href="@{/book-create}">新規登録</a>
</body>
</html>

BookController.java

次にBookController.javaに本を削除するメソッドを追加します。

BookControllerでは画面から送られてくる、削除対象のデータのidを受け取ります。
受け取ったidを先ほど作成した、BookServiceのdeleteメソッドに渡して、データの削除を行います。

package com.uhablog.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

import com.uhablog.form.BookForm;
import com.uhablog.form.EditBookForm;
import com.uhablog.model.Book;
import com.uhablog.service.BookService;

@Controller
public class BookController {
	
	@Autowired
	BookService service;
	
	// 本の一覧画面を表示する
	@GetMapping("/book-list")
	public String bookList(Model model) {
		
		// serviceを使って、本の一覧をDBから取得する
		List<Book> bookList = service.findAll();
		// modelに本の一覧を設定して、画面に渡す
		model.addAttribute("bookList", bookList);
		// bookList.htmlの表示
		return "bookList";
	}
	
	・
	・
	・
	
	// 本の削除を行う
	@GetMapping("/book-delete")
	public String deleteBook(Model model, Book Book) {
		
		// データベースのデータを削除する
		service.delete(Book.getId());
		
		// 本の一覧画面にリダイレクト
		return "redirect:/book-list";
		
	}

}

BookService.java

BookService.javaにサーバーからデータを削除するメソッドを作成します。

今回はdeleteメソッドで削除を行います。
repositoryクラスのdeleteByIdメソッドに引数として受け取った、削除対象のデータのidを渡します。

package com.uhablog.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.uhablog.form.BookForm;
import com.uhablog.form.EditBookForm;
import com.uhablog.model.Book;
import com.uhablog.repository.BookRepository;

@Service
@Transactional
public class BookService {
	
	@Autowired
	BookRepository repository;
	
	// データベースから本の一覧を取得する
	public List<Book> findAll() {
		return repository.findAll();
	}
	
	・
	・
	・
	
	// 本を削除する
	public void delete(Integer id) {
		
		// idを指定して、データベースからデータを削除する
		repository.deleteById(id);
	}
}

BookRepository.java

Serviceクラスから呼び出されて、データの削除を行うBookRepository.javaです。

package com.uhablog.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.uhablog.model.Book;

public interface BookRepository extends JpaRepository<Book, Integer> {

}

Book.java

データベースのテーブルに対応したクラスを用意して、Javaでデータを扱います。

package com.uhablog.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.Data;

@Data
@Entity
@Table(name = "booksinfo")
public class Book {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id")
	// 本のidを保持するフィールド
	private Integer id;
	
	@Column(name="title")
	// 本のタイトルを保持するフィールド
	private String title;
	
	
	@Column(name="price")
	// 本の値段を保持するフィールド
	private Integer price;
}



動作確認

サーバーを起動させて、動作確認を行います。

削除ボタンを押すとデータを削除することができます。

このようにこのサイトではプログラミング初心者や未経験の学生や社会人の方に向けて、JavaでWebアプリを開発する方法を発信しています。

プログラミングを勉強して、エンジニアになりたい!」という方はぜひこのサイトを参考に、エンジニアを目指してください!
プログラミング未経験からエンジニアになるまでのロードマップ

タイトルとURLをコピーしました