From d41e4dac7c00587adc611068012fcf931af69534 Mon Sep 17 00:00:00 2001 From: w-yuki Date: Thu, 24 Sep 2026 16:09:20 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[add]=E6=96=B0=E8=A6=8F=E7=99=BB=E9=8C=B2?= =?UTF-8?q?=E7=94=BB=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BookInsertConfirmController.java | 12 +--- .../demo/controller/BookInsertController.java | 51 ++++++++++++-- .../com/example/demo/entity/BookInsert.java | 32 +++++++++ .../demo/repository/BookInsertRepository.java | 11 +++ .../demo/service/BookInsertService.java | 11 +++ .../demo/service/BookInsertServiceImpl.java | 33 +++++++++ src/main/resources/templates/bookInsert.html | 68 ++++++++++++++++++- .../templates/bookInsertConfirm.html | 21 +++++- 8 files changed, 219 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/example/demo/entity/BookInsert.java create mode 100644 src/main/java/com/example/demo/repository/BookInsertRepository.java create mode 100644 src/main/java/com/example/demo/service/BookInsertService.java create mode 100644 src/main/java/com/example/demo/service/BookInsertServiceImpl.java diff --git a/src/main/java/com/example/demo/controller/BookInsertConfirmController.java b/src/main/java/com/example/demo/controller/BookInsertConfirmController.java index d3e6cc1..447b97a 100644 --- a/src/main/java/com/example/demo/controller/BookInsertConfirmController.java +++ b/src/main/java/com/example/demo/controller/BookInsertConfirmController.java @@ -1,14 +1,6 @@ package com.example.demo.controller; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; +//@Controller + -@Controller -public class BookInsertConfirmController { - @GetMapping("/bookInsertConfirm") - public String bookInsertConfirm() { - return "bookInsertConfirm"; - - } -} diff --git a/src/main/java/com/example/demo/controller/BookInsertController.java b/src/main/java/com/example/demo/controller/BookInsertController.java index d066d30..4b0c613 100644 --- a/src/main/java/com/example/demo/controller/BookInsertController.java +++ b/src/main/java/com/example/demo/controller/BookInsertController.java @@ -1,13 +1,52 @@ package com.example.demo.controller; +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.PostMapping; + +import com.example.demo.entity.BookInsert; +import com.example.demo.repository.BookCategoryRepository; +import com.example.demo.service.BookInsertService; @Controller public class BookInsertController { - @GetMapping("bookInsert") - public String bookInsert() { - return "bookInsert"; - - } -} + +@Autowired +private BookInsertService bookInsertService; + +@Autowired +private BookCategoryRepository categoryRepository; + + @GetMapping("/bookInsert") + public String bookInsert(Model model) { + model.addAttribute("categoryList",categoryRepository.findAll()); + model.addAttribute("bookInsert",new BookInsert()); + return "bookInsert"; + } + + // 初期表示: 空のformを渡す(th:fieldの初期値が空になる) + + // 確認画面から戻る: POSTされた入力中の値がformに入ったまま入力画面へ + @PostMapping("/bookInsertConfirm") + public String bookInsertConfirm(BookInsert bookInsert,Model model) { + model.addAttribute("bookInsert",bookInsert); + return "bookInsertConfirm"; + } + + @PostMapping("/bookInsert") + public String bookInsertBack(BookInsert bookInsert,Model model) { + + model.addAttribute("categoryList",categoryRepository.findAll()); + + model.addAttribute("bookInsert",bookInsert); + return "bookInsert"; + } + + + + + } + + diff --git a/src/main/java/com/example/demo/entity/BookInsert.java b/src/main/java/com/example/demo/entity/BookInsert.java new file mode 100644 index 0000000..a94c3cd --- /dev/null +++ b/src/main/java/com/example/demo/entity/BookInsert.java @@ -0,0 +1,32 @@ +package com.example.demo.entity; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +import lombok.Data; + +@Entity // このクラスがDBのテーブルに対応することを表す +@Data +public class BookInsert { + + @Id // 主キー + @GeneratedValue(strategy = GenerationType.IDENTITY) // 自動採番 + private Long Id; + + private String bookId; + private String title; + private Integer isbn; + private String author; + private String category; + private String subcategory; + private Integer publisher; + private Integer publicationDate; + private String location; + private String condition; + private String donor; + private String discription; + + +} diff --git a/src/main/java/com/example/demo/repository/BookInsertRepository.java b/src/main/java/com/example/demo/repository/BookInsertRepository.java new file mode 100644 index 0000000..16ab016 --- /dev/null +++ b/src/main/java/com/example/demo/repository/BookInsertRepository.java @@ -0,0 +1,11 @@ +package com.example.demo.repository; + + + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.example.demo.entity.BookInsert; + +public interface BookInsertRepository extends JpaRepository { + +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/service/BookInsertService.java b/src/main/java/com/example/demo/service/BookInsertService.java new file mode 100644 index 0000000..f49fffb --- /dev/null +++ b/src/main/java/com/example/demo/service/BookInsertService.java @@ -0,0 +1,11 @@ +package com.example.demo.service; + +import java.util.List; + +import com.example.demo.entity.BookInsert; + +public interface BookInsertService { + String regist(BookInsert book); + + List findAll(); + } diff --git a/src/main/java/com/example/demo/service/BookInsertServiceImpl.java b/src/main/java/com/example/demo/service/BookInsertServiceImpl.java new file mode 100644 index 0000000..5c47923 --- /dev/null +++ b/src/main/java/com/example/demo/service/BookInsertServiceImpl.java @@ -0,0 +1,33 @@ + package com.example.demo.service; + + import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.example.demo.entity.BookInsert; +import com.example.demo.repository.BookInsertRepository; + + @Service + public class BookInsertServiceImpl implements BookInsertService { + + @Autowired + private BookInsertRepository bookInsertRepository; + + @Override + public String regist(BookInsert book) { + // DTO → エンティティへ詰め替えて保存 + bookInsertRepository.save(book); + book.setBookId("bk"+book.getId()); + bookInsertRepository.save(book); // 保存 + return "登録が完了しました"; + } + + @Override + public List findAll() { + return bookInsertRepository.findAll(); // 全件取得 + } + } + + // ※BookService インタフェースにも List findAll(); を追加すること + diff --git a/src/main/resources/templates/bookInsert.html b/src/main/resources/templates/bookInsert.html index 41ae8a2..c37b657 100644 --- a/src/main/resources/templates/bookInsert.html +++ b/src/main/resources/templates/bookInsert.html @@ -8,8 +8,74 @@

新規図書登録入力

-
+ +
+

+ + + +
+ +

+ +
+ +

+ +
+ +

+ +
+ +

+ +
+ +

+ +
+ +

+ +
+ +

+ +
+ +

+ +
+ +

+ +
+ +

+ +
+ +

+ +
+ +

+ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/bookInsertConfirm.html b/src/main/resources/templates/bookInsertConfirm.html index 95c84a3..0f7b6ab 100644 --- a/src/main/resources/templates/bookInsertConfirm.html +++ b/src/main/resources/templates/bookInsertConfirm.html @@ -9,9 +9,23 @@

登録内容確認

- - - + + + + + + + + + + + + + + + + +
@@ -52,6 +66,7 @@
+ From 07c62be1bdf099d39e9e98e60b0f8bba60d910da Mon Sep 17 00:00:00 2001 From: w-yuki Date: Fri, 25 Sep 2026 13:25:30 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[add]=E3=82=AB=E3=83=86=E3=82=B4=E3=83=AA?= =?UTF-8?q?=E3=83=BB=E3=82=B5=E3=83=96=E3=82=AB=E3=83=86=E3=82=B4=E3=83=AA?= =?UTF-8?q?=E3=81=AE=E3=83=97=E3=83=AB=E3=83=80=E3=82=A6=E3=83=B3=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/BookInsertController.java | 32 +++++++-- .../com/example/demo/entity/BookInsert.java | 71 +++++++++++++++---- .../demo/service/BookInsertService.java | 4 +- .../demo/service/BookInsertServiceImpl.java | 20 +++++- src/main/resources/templates/bookInsert.html | 71 +++++++++++++------ .../templates/bookInsertConfirm.html | 5 +- 6 files changed, 156 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/example/demo/controller/BookInsertController.java b/src/main/java/com/example/demo/controller/BookInsertController.java index 4b0c613..6ed1d7b 100644 --- a/src/main/java/com/example/demo/controller/BookInsertController.java +++ b/src/main/java/com/example/demo/controller/BookInsertController.java @@ -1,5 +1,7 @@ package com.example.demo.controller; +import java.util.ArrayList; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -8,6 +10,7 @@ import org.springframework.web.bind.annotation.PostMapping; import com.example.demo.entity.BookInsert; import com.example.demo.repository.BookCategoryRepository; +import com.example.demo.repository.SubCategoryRepository; import com.example.demo.service.BookInsertService; @Controller @@ -18,10 +21,13 @@ private BookInsertService bookInsertService; @Autowired private BookCategoryRepository categoryRepository; +@Autowired +private SubCategoryRepository subCategoryRepository; @GetMapping("/bookInsert") public String bookInsert(Model model) { model.addAttribute("categoryList",categoryRepository.findAll()); + model.addAttribute("subCategoryList",subCategoryRepository.findAll()); model.addAttribute("bookInsert",new BookInsert()); return "bookInsert"; } @@ -31,22 +37,36 @@ private BookCategoryRepository categoryRepository; // 確認画面から戻る: POSTされた入力中の値がformに入ったまま入力画面へ @PostMapping("/bookInsertConfirm") public String bookInsertConfirm(BookInsert bookInsert,Model model) { + bookInsertService.save(bookInsert); model.addAttribute("bookInsert",bookInsert); return "bookInsertConfirm"; } @PostMapping("/bookInsert") public String bookInsertBack(BookInsert bookInsert,Model model) { - - model.addAttribute("categoryList",categoryRepository.findAll()); - - model.addAttribute("bookInsert",bookInsert); + model.addAttribute("categoryList",categoryRepository.findAll()); + model.addAttribute("subCategoryList",new ArrayList<>()); + model.addAttribute("bookInsert",bookInsert); return "bookInsert"; } - + @PostMapping("/bookInsert/category") + public String changeCategory(BookInsert bookInsert,Model model) { + //カテゴリプルダウンに表示するデータを取得 + model.addAttribute("categoryList",categoryRepository.findAll()); + + model.addAttribute("subCategoryList",subCategoryRepository.findByBookCategory_BookCategoryId(bookInsert.getBookCategoryId())); + model.addAttribute("bookInsert", bookInsert); + + return "bookInsert"; + } + + + } + + //画面で選択したカテゴリbookInsert.getBookCategoryId()) - } + diff --git a/src/main/java/com/example/demo/entity/BookInsert.java b/src/main/java/com/example/demo/entity/BookInsert.java index a94c3cd..ffe074a 100644 --- a/src/main/java/com/example/demo/entity/BookInsert.java +++ b/src/main/java/com/example/demo/entity/BookInsert.java @@ -1,32 +1,75 @@ package com.example.demo.entity; +import java.time.LocalDate; +import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; import lombok.Data; @Entity // このクラスがDBのテーブルに対応することを表す +@Table(name = "book") @Data public class BookInsert { @Id // 主キー @GeneratedValue(strategy = GenerationType.IDENTITY) // 自動採番 - private Long Id; - - private String bookId; - private String title; - private Integer isbn; - private String author; - private String category; - private String subcategory; - private Integer publisher; - private Integer publicationDate; - private String location; - private String condition; - private String donor; - private String discription; + @Column(name = "book_id") + private Integer bookId; + @Column(name = "book_manage_id") + private String bookManageId; + + @Column(name = "title") + private String title; + + @Column(name = "isbn") + private String isbn; + + @Column(name = "author") + private String author; + + @Column(name = "book_subcategory_id") + private Integer subcategory; + + @Column(name = "publisher") + private String publisher; + + @Column(name = "publication_date") + private String publicationDate; + + @Column(name = "location_id") + private Integer location; + + @Column(name = "condition_s") + private Integer condition; + + @Column(name = "donor_id") + private Integer donor; + + @Column(name = "description") + private String description; + + @Column(name = "created_at") + private LocalDate createdAt; + + @Column(name = "updated_at") + private LocalDate updatedAt; + + @Column(name = "is_deleted") + private Integer isDeleted; + + @Column(name = "book_approval") + private Integer bookApproval; + @Transient + private Integer bookCategoryId; + + + + } diff --git a/src/main/java/com/example/demo/service/BookInsertService.java b/src/main/java/com/example/demo/service/BookInsertService.java index f49fffb..51a4f71 100644 --- a/src/main/java/com/example/demo/service/BookInsertService.java +++ b/src/main/java/com/example/demo/service/BookInsertService.java @@ -6,6 +6,6 @@ import com.example.demo.entity.BookInsert; public interface BookInsertService { String regist(BookInsert book); - List findAll(); - } + void save(BookInsert bookInsert); +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/service/BookInsertServiceImpl.java b/src/main/java/com/example/demo/service/BookInsertServiceImpl.java index 5c47923..d8e6c32 100644 --- a/src/main/java/com/example/demo/service/BookInsertServiceImpl.java +++ b/src/main/java/com/example/demo/service/BookInsertServiceImpl.java @@ -1,6 +1,7 @@ package com.example.demo.service; - import java.util.List; + import java.time.LocalDate; +import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -17,8 +18,6 @@ import com.example.demo.repository.BookInsertRepository; @Override public String regist(BookInsert book) { // DTO → エンティティへ詰め替えて保存 - bookInsertRepository.save(book); - book.setBookId("bk"+book.getId()); bookInsertRepository.save(book); // 保存 return "登録が完了しました"; } @@ -27,7 +26,22 @@ import com.example.demo.repository.BookInsertRepository; public List findAll() { return bookInsertRepository.findAll(); // 全件取得 } + + public void save(BookInsert bookInsert) { + bookInsert.setCreatedAt(LocalDate.now());//登録日時設定 + bookInsert.setUpdatedAt(LocalDate.now());//更新日時設定 + bookInsert.setIsDeleted(0);//削除フラグ設定 + bookInsert.setBookApproval(0);//承認フラグ(承認されていないため0) + bookInsertRepository.save(bookInsert); + //BK〇〇〇〇形式で管理IDを作る + String manageId="BK-" + bookInsert.getBookId();//BookId取得→BK形式に変換 + bookInsert.setBookManageId(manageId); + + bookInsertRepository.save(bookInsert);//データベースに保存 + } } + + // ※BookService インタフェースにも List findAll(); を追加すること diff --git a/src/main/resources/templates/bookInsert.html b/src/main/resources/templates/bookInsert.html index c37b657..467e577 100644 --- a/src/main/resources/templates/bookInsert.html +++ b/src/main/resources/templates/bookInsert.html @@ -12,18 +12,26 @@


-
+ -
- -

+
+ +

+ +
+ +





- +


@@ -31,11 +39,31 @@


- +


- +


@@ -47,33 +75,36 @@


- + + +


- +




-
- + +
diff --git a/src/main/resources/templates/bookInsertConfirm.html b/src/main/resources/templates/bookInsertConfirm.html index 0f7b6ab..9a53f47 100644 --- a/src/main/resources/templates/bookInsertConfirm.html +++ b/src/main/resources/templates/bookInsertConfirm.html @@ -13,17 +13,18 @@
+ - + - +
From 420d3cd44c1d4f46311d38cedcd3c24f54af08b7 Mon Sep 17 00:00:00 2001 From: w-yuki Date: Fri, 25 Sep 2026 13:29:41 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[add]=E3=82=B5=E3=83=96=E3=82=AB=E3=83=86?= =?UTF-8?q?=E3=82=B4=E3=83=AA=E3=83=BC=E3=81=AERepository=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/repository/SubCategoryRepository.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/main/java/com/example/demo/repository/SubCategoryRepository.java diff --git a/src/main/java/com/example/demo/repository/SubCategoryRepository.java b/src/main/java/com/example/demo/repository/SubCategoryRepository.java new file mode 100644 index 0000000..7a2ea13 --- /dev/null +++ b/src/main/java/com/example/demo/repository/SubCategoryRepository.java @@ -0,0 +1,12 @@ +package com.example.demo.repository; +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.example.demo.entity.BookSubcategory; + +public interface SubCategoryRepository + extends JpaRepository { + List findByBookCategory_BookCategoryId(Integer bookCategoryId); + +} \ No newline at end of file From 7b70861fd8024bf6f5164495e10345b894200bec Mon Sep 17 00:00:00 2001 From: w-yuki Date: Fri, 25 Sep 2026 16:36:18 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[add]=E3=83=97=E3=83=AB=E3=83=80=E3=82=A6?= =?UTF-8?q?=E3=83=B3=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=BE=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/BookInsertController.java | 15 +++- .../com/example/demo/entity/BookInsert.java | 4 +- .../repository/StorageLocationRepository.java | 9 ++ src/main/resources/templates/bookInsert.html | 84 +++++++++---------- 4 files changed, 64 insertions(+), 48 deletions(-) create mode 100644 src/main/java/com/example/demo/repository/StorageLocationRepository.java diff --git a/src/main/java/com/example/demo/controller/BookInsertController.java b/src/main/java/com/example/demo/controller/BookInsertController.java index 6ed1d7b..c725330 100644 --- a/src/main/java/com/example/demo/controller/BookInsertController.java +++ b/src/main/java/com/example/demo/controller/BookInsertController.java @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.PostMapping; import com.example.demo.entity.BookInsert; import com.example.demo.repository.BookCategoryRepository; +import com.example.demo.repository.StorageLocationRepository; import com.example.demo.repository.SubCategoryRepository; import com.example.demo.service.BookInsertService; @@ -21,13 +22,18 @@ private BookInsertService bookInsertService; @Autowired private BookCategoryRepository categoryRepository; + @Autowired private SubCategoryRepository subCategoryRepository; +@Autowired +private StorageLocationRepository storageLocationRepository; + @GetMapping("/bookInsert") public String bookInsert(Model model) { model.addAttribute("categoryList",categoryRepository.findAll()); model.addAttribute("subCategoryList",subCategoryRepository.findAll()); + model.addAttribute("locationList",storageLocationRepository.findAll()); model.addAttribute("bookInsert",new BookInsert()); return "bookInsert"; } @@ -37,6 +43,7 @@ private SubCategoryRepository subCategoryRepository; // 確認画面から戻る: POSTされた入力中の値がformに入ったまま入力画面へ @PostMapping("/bookInsertConfirm") public String bookInsertConfirm(BookInsert bookInsert,Model model) { + System.out.println(bookInsert); bookInsertService.save(bookInsert); model.addAttribute("bookInsert",bookInsert); return "bookInsertConfirm"; @@ -46,6 +53,7 @@ private SubCategoryRepository subCategoryRepository; public String bookInsertBack(BookInsert bookInsert,Model model) { model.addAttribute("categoryList",categoryRepository.findAll()); model.addAttribute("subCategoryList",new ArrayList<>()); + model.addAttribute("locationList",storageLocationRepository.findAll()); model.addAttribute("bookInsert",bookInsert); return "bookInsert"; } @@ -56,16 +64,21 @@ private SubCategoryRepository subCategoryRepository; model.addAttribute("categoryList",categoryRepository.findAll()); model.addAttribute("subCategoryList",subCategoryRepository.findByBookCategory_BookCategoryId(bookInsert.getBookCategoryId())); + model.addAttribute("locationList",storageLocationRepository.findAll()); model.addAttribute("bookInsert", bookInsert); return "bookInsert"; } + } - //画面で選択したカテゴリbookInsert.getBookCategoryId()) + //画面で選択したカテゴリbookInsert.getBookCategoryId()に選択した結果をいれる + //subCategoryRepository.findBookCategory_BookCategoryId(bookInsert.getBookCategoryId(1))); + //「カテゴリIDが1のサブカテゴリを取ってくる」 + //model.addAttribute("subCategoryList",取得結果) diff --git a/src/main/java/com/example/demo/entity/BookInsert.java b/src/main/java/com/example/demo/entity/BookInsert.java index ffe074a..9305b62 100644 --- a/src/main/java/com/example/demo/entity/BookInsert.java +++ b/src/main/java/com/example/demo/entity/BookInsert.java @@ -40,7 +40,7 @@ public class BookInsert { private String publisher; @Column(name = "publication_date") - private String publicationDate; + private LocalDate publicationDate; @Column(name = "location_id") private Integer location; @@ -66,7 +66,7 @@ public class BookInsert { @Column(name = "book_approval") private Integer bookApproval; - @Transient + @Transient //DB保存無効 private Integer bookCategoryId; diff --git a/src/main/java/com/example/demo/repository/StorageLocationRepository.java b/src/main/java/com/example/demo/repository/StorageLocationRepository.java new file mode 100644 index 0000000..861a62a --- /dev/null +++ b/src/main/java/com/example/demo/repository/StorageLocationRepository.java @@ -0,0 +1,9 @@ +package com.example.demo.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.example.demo.entity.StorageLocation; + +public interface StorageLocationRepository extends JpaRepository { + +} \ No newline at end of file diff --git a/src/main/resources/templates/bookInsert.html b/src/main/resources/templates/bookInsert.html index 467e577..059917e 100644 --- a/src/main/resources/templates/bookInsert.html +++ b/src/main/resources/templates/bookInsert.html @@ -8,17 +8,12 @@

新規図書登録入力

- -


- +

新しく図書を登録します。必要事項jを入力し、「登録」ボタンを押してください

+ ※は必須項目です +

-
- -




-
+


-
- +
+

-
+


+
- + +

-
+


- -
- + +
+

-
- -

- -
- -

- -
- +

+ +
+ +

+ +
+ +


@@ -103,7 +97,7 @@ --> - +