사용자 정의 query method 만드는법(JPA 공식 홈페이지): https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
사용자 정의 query method를 사용하면 스프링 이런식으로 repository 생성시 정렬을해서 넘길 수 있다.
public interface MemoRepository extends JpaRepository<Memo, Long> {
List<Memo> findAllByOrderByModifiedAtDesc();
}
@RequiredArgsConstructor - 클래스 안에서 final 멤버 변수 선언시 생성될때 같이 넣어줌
css 선택자(id, class)
#contents { <----- id가 컨텐츠인 것들을 가리킴
width: 538px
}
.area { <----- class가 에리어 인것들을 가리킴
dfsdfds
}
timestamped 클래스에 @Getter를 빼먹어서 entity 클래스에서 시간을 못 받아온다. DB에는 또 잘 들어가나 DB에 있는걸 꺼낼때 안 가져와 져서 애를 먹었다.
@RequestParam 사용 시 URL?id=1을 해주었어야했는데 URL?=1이라고 해놔서 계속 bad request가 떠서 애를 먹었다.
application/json에 h2 설정을 안넣어줘서 db가 계속 연결이 안되었다.
modal 사용이 안됨(bootstrap에 있는거 그대로 붙어넣어도 작동을안함)
이 블로그가 나를 살려줬다. https://m.blog.naver.com/10hsb04/221672312196
@RestController 사용시 상세 페이지로의 전환이 서버쪽에서는 불가능하여 @Controller를 따로 만들어서 modelandview를 넘겨주는 방식으로 했다.
@RestController 방식
@GetMapping("/api/blogs/{id}")
public Optional<Blog> getOneBlog(@PathVariable Long id) {
return blogRepository.findById(id);
}
이렇게 하면 데이터만 넘겨주기에 index.html에서 post.html로 넘어갈 방법을 찾을 수가 없었다.
@Controller 방식
@GetMapping("/api/blogs/detail")
public ModelAndView getOneBlog(@RequestParam Long id) {
Blog blog = blogRepository.findById(id).orElseThrow(
() -> new NullPointerException("")
);
ModelAndView mv = new ModelAndView();
mv.setViewName("post"); // 뷰의 이름
mv.addObject("data", blog);
mv.addObject("style", "background-image: url('assets/img/post-bg.jpg')");
return mv;
}
modelandview에서 view에 post.html을 넣어서 반환해 주었다. 근데 이러니까 html의 css와 image들이 하나도 적용이 안되네.....
오늘 3주차 개인과제를 배포와 데이터베이스 연결을 제외하고 완료 하였다. 내일부터는 배포 후 thymeleaf와 프로젝트에 PUT, Delete를 넣어서 확장시키거나 4주차 강의를 한번 들어봐야 겠다. 전에 만났던 여러 팀원 분들이 도움을 주셔서 해결할 수 있었던 문제들이 많아서 참 다행이었다. 스프링 부트는 쉬운것 같으면서도 결국 잘하려면 스프링을 알아야 하는것 같다 ㅠㅠ 공부할게 정말 산더미...