diff --git a/src/main/java/com/example/demo/controller/BookController.java b/src/main/java/com/example/demo/controller/BookController.java index dba3968..1dc77b3 100644 --- a/src/main/java/com/example/demo/controller/BookController.java +++ b/src/main/java/com/example/demo/controller/BookController.java @@ -6,23 +6,55 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; import com.example.demo.entity.Book; +import com.example.demo.form.BookSearchForm; import com.example.demo.service.BookServiceImpl; @Controller public class BookController { @Autowired private BookServiceImpl bookService; - + + /* 一覧表示 */ @GetMapping("/book") public String book(Model model) { - + List aaa = bookService.findAll(); - + // DBから取得したデータをHTMLで扱えるようにする - model.addAttribute("book",bookService.findAll()); + model.addAttribute("book", bookService.findAll()); + + model.addAttribute("bookSearchForm", new BookSearchForm()); + return "book"; } + /* 検索処理 */ + @GetMapping("/searchBooks") + public String searchBooks(@ModelAttribute BookSearchForm bookSearchForm, + Model model) { + + model.addAttribute("book", bookService.findBooks(bookSearchForm.getKeyword())); + + model.addAttribute("bookSearchForm", bookSearchForm); + + return "book"; + + } + + /* クリア処理 */ + @PostMapping("/clearBookList") + public String clearBookList(Model model) { + + model.addAttribute("book", bookService.findAll()); + + model.addAttribute("bookSearchForm", new BookSearchForm()); + + // 一覧表示画面に戻る + return "/book"; + } + } diff --git a/src/main/java/com/example/demo/form/BookSearchForm.java b/src/main/java/com/example/demo/form/BookSearchForm.java new file mode 100644 index 0000000..a9e1f8d --- /dev/null +++ b/src/main/java/com/example/demo/form/BookSearchForm.java @@ -0,0 +1,10 @@ +package com.example.demo.form; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class BookSearchForm { + private String keyword; +} diff --git a/src/main/java/com/example/demo/repository/BookRepository.java b/src/main/java/com/example/demo/repository/BookRepository.java index f8d5774..b74e641 100644 --- a/src/main/java/com/example/demo/repository/BookRepository.java +++ b/src/main/java/com/example/demo/repository/BookRepository.java @@ -1,10 +1,20 @@ package com.example.demo.repository; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import com.example.demo.entity.Book; public interface BookRepository extends JpaRepository{ - + @Query(""" + SELECT b FROM Book b + WHERE b.title LIKE %:keyword% + OR b.publisher LIKE %:keyword% + OR b.author LIKE %:keyword% + """) + List searchBooks(@Param("keyword")String keyword); } diff --git a/src/main/java/com/example/demo/service/BookServiceImpl.java b/src/main/java/com/example/demo/service/BookServiceImpl.java index c12e07d..da7268a 100644 --- a/src/main/java/com/example/demo/service/BookServiceImpl.java +++ b/src/main/java/com/example/demo/service/BookServiceImpl.java @@ -1,6 +1,5 @@ package com.example.demo.service; - import java.util.List; import org.springframework.beans.factory.annotation.Autowired; @@ -10,26 +9,17 @@ import com.example.demo.entity.Book; import com.example.demo.repository.BookRepository; @Service -public class BookServiceImpl{ - +public class BookServiceImpl { + @Autowired private BookRepository bookRepository; - -// @Override -// public String booklist(com.example.demo.entity.Book book) { -// Book booklist = new Book(); -// booklist.setBookId(book.getBookId()); -// -// return null; -// } - - public List findAll() { return bookRepository.findAll(); } - - + public List findBooks(String keyword){ + return bookRepository.searchBooks(keyword); + } } diff --git a/src/main/resources/templates/book.html b/src/main/resources/templates/book.html index 199aabd..1a02ff4 100644 --- a/src/main/resources/templates/book.html +++ b/src/main/resources/templates/book.html @@ -12,6 +12,27 @@

社内図書一覧

+ +
+ + + + + +
+ +
+ +
+ +

※「タイトル」「出版社」「著者名」で検索

+ + +
@@ -68,7 +89,7 @@ 貸出 - + @@ -77,8 +98,12 @@ - - + + + +
+ 該当する図書がありません +