[movie] DB 값 가져와서 /get 구현하기

myminimin·2023년 9월 5일
0

toyproject

목록 보기
2/17

실습내내 DB 설계하느라 페이지 구현은 전혀 하지 못했어서 집에서 추가로 진행했다!

생각보다 되게 쉬웠는데 (기존에 실습에 사용했던 프로젝트를 그대로 값만 변경했기 때문에...) 일단 내가 오늘 추가한 movie table에 있는 값들을 그대로 잘 가지고 오는 것을 확인했으니 내일 실습 시간에는 분해/조립한다는 생각으로 혼자서 다시 진행해보자. + 회원가입 CRUD 구현하기!


구현 순서 : DB -> VO -> service -> mapper -> serviceImpl -> mapper.xml -> controller -> get.jsp

1. get 페이지 실행 화면 ( /get?movie_id=1)

여기에서 보면 movie.movie_id 이런 식으로 값을 가지고와서 굉장히 불편했다.... 😤

2. BoardController

controller에서 "movie"는 모델에 속성을 추가하는데 사용되는 키(Key)이다! 모델은 컨트롤러와 뷰 간에 데이터를 전달하는 데 사용되는 객체인데 이 모델을 써서 "movie"라는 키를 get.jsp로 전달한다.

그래서 1번 get.jsp에서 {movie.movie_id} 이렇게 값을 가지고 올 수 있는 거다!

3. BoardMapper.xml

여기에서 중요한건 mapper namespace="", resultType="" 안의 경로를 잘 지정해야 하는데
namespace는 매퍼 파일을 구분하는 유일한 식별자로 사용이 된다. MyBatis를 사용할 때 'namespace'를 통해 해당 매퍼 파일의 SQL 문장에 접근하기 때문에 정말 중요하다.

resultType은 SQL 쿼리의 결과를 매핑한 Java 객체의 클래스 경로를 지정한다. MyBatis는 이 정보를 사용해서 SQL 결과를 Java 객체로 매핑하고, 그 결과를 반환한다! -> SQL 결과와 Java 객체 간의 매핑을 설정하는데 중요한 역할을 함!!

4. BoardServiceImpl / BoardService


BoardServiceImpl은 BoardService interface를 구현하기 때문에 BoardService의 모든 기능을 재정의 해야한다는 점과 BoardMapper에서 의존성을 주입받아서 BoardMapper의 메서드도 호출해서 관련 기능을 사용할 수 있다.

movie_id가 VO, service, serviceImpl, mapper 에서 모두 int타입으로 통일이 되어야 한다는 점 잊지말자.

5. BoardMapper, BoardVO

BoardMapper에서 read로 구현한 것을 serverImpl에서 사용함

여기도 movie_id는 int타입!
RelaseYear 같은 경우는 date 타입으로 할 수도 있지만 (DB에서는 Date임) String으로 하는게 날짜를 특정 형식으로 포맷하거나 원하는 날짜 연산을 수행하기에 더 편하기 때문에 String으로 했다.

0개의 댓글