노트는 특정 노트북에 속해야한다 -> notebook 패키지 만들기 -> notebook 엔터티 만들기(관계설정하기) -> 저장 할수있게
notebookRepository 만들기 -> ui를 바꿔줘야함
< div class="bg-indigo-300 w-[20%]">
< /div>
->화면에 notebook데이터가 보여줘야하므로
private final NotebookRepository notebookRepository;
List< Notebook> notebookList = notebookRepository.findAll();
if(notebookList.isEmpty()) {
Notebook notebook = new Notebook();
notebook.setName("새노트");
notebookRepository.save(notebook);
return "redirect:/";
}
Notebook targetNotebook = notebookList.get(0); ->내가 선택한게 없다하면 젤위에거 꺼내오자
->model에 추가
model.addAttribute("notebookList", notebookList);
model.addAttribute("targetNotebook", targetNotebook);
->템플릿가서
< div class="bg-indigo-300 w-[20%]">
< ul class="h-[100%] overflow-scroll">
< li th:each="notebook : {notebook.id == targetNotebook.id} ? 'bg-blue-600' : ''">
< a th:href="@{|/detail/ $ { notebook.id}|}" th:text="${notebook.name}">< /a>
< /li>
< /ul>
< /div>
이렇게 하면 새노트가 생긴다.
->노트들이 노트북에 속해야한다 -> 노트가 어떤 노트북에 속한지 알수없다 -> 양뱡향관계에선 관계의 주인이 多 쪽이다
->관계의 주인을 이용해 notebook 연결해주고 저장해야함
private Note saveDefault(Notebook notebook) {
Note note = new Note();
note.setTitle("new title..");
note.setContent("");
note.setCreateDate(LocalDateTime.now());
note.setNotebook(notebook);
->if(noteList.isEmpty()) {
saveDefault(targetNotebook);
return "redirect:/";
} 에서 saveDefault(targetNotebook); -> 내가 선택한 노트북의 속한 하위 노트 =선택한노트북에대한 디폴트 노트가 생성
-> 위에선 List< Notebook> 이있어서 가능한데 write 에는 없다 . -> 노트북을 가져오려면 노트북 아이디필요
@PostMapping("books/{notebookId}/write")
public String write(@PathVariable("notebookId") Long notebookId) {
Notebook notebook = notebookRepository.findById(notebookId).orElseThrow();
saveDefault(notebook);
return "redirect:/";
}
-> 템플릿가서 < form th:action="@{|/books/${ targetNotebook.id}/write|}" method="post">
< form th:action="@{|/books/${targetNotebook.id}/write|}" method="post"> // 내가선택한 노트북에 노트가 추가되어야함
< /form>