2021.06.16
40번째 포스팅
입사 100일 차.
이제 모든 준비가 끝났다. View에서 사용자의 요청을 받아 DB의 데이터에 변형을 주는 작업만이 남아있다.
오늘은 Service, Repository를 만들어서 DB와 Spring을 연결해보려고 한다.
아래에 작성하는 내용들은 5일 차까지 똑같이 작성했다는 전제가 깔려있다.
1. Spring MVC 모델 데이터의 흐름
① Spring Framework안의 데이터는 정해진 흐름대로 흘러가야 한다.
② View(화면) > Controller > Service > Repository > MyBatis(Mapper) > DB(MySQL)의 순서대로 데이터는 이동한다.
③ 반대로 SELECT 쿼리를 작성해서 DB의 데이터를 View로 가져오는 경우,
DB > MyBatis(Mapper) > Repository > Service > Controller > View(동적 페이지)의 역순으로 진행된다.
④ SELECT를 이용해서 가져오는 데이터를 View에 표시하려면 View는 동적 페이지가 되어야 한다.
2. MyBatis(Mapper.xml) 설치
① 개발자가 작성한 SQL 쿼리, 지정한 Procedure, 고급 Mapping 등을 지원하는 프레임워크.
② xml형식으로 작성된 쿼리를 DB에서 실행할 수 있도록 도와주는 프레임워크다.
③ sts에서는 추가로 설치가 필요하다.
④ 설치한 MyBatis는 자주 사용하므로, Perspective 메뉴에 추가해서 사용하는 것이 좋다.
3. MyBatis(Mapper.xml) 쿼리 작성
① MyBatis를 만들어주자. (**은 사용자가 만드는 패키지입니다.)
경로 : src/main/java/com/exmaple/프로젝트명/**/repository/
※ 저는 src/main/java/com/exmaple/프로젝트명/admin/repository/TableMapper.xml을 만들었습니다.
② 각 쿼리 별 기본 구조가 있다. resultMap, statementType 등의 속성을 추가해서 사용할 수 있다.
※ 특이사항 : SELECT만 resultType이 있다.
<!-- SELECT 쿼리의 기본구조 --> <SELECT id="" parameterType="" resultType=""> </SELECT> <!-- INSERT 쿼리의 기본구조 --> <INSERT id="" parameterType=""> </INSERT> <!-- UPDATE 쿼리의 기본구조 --> <UPDATE id="" parameterType=""> </UPDATE> <!-- DELETE 쿼리의 기본구조 --> <DELETE id="" parameterType=""> </DELETE> |
③ 우리는 user_info라는 테이블의 user_name이라는 varchar(문자열) 타입의 컬럼의 값을 가져오려고 한다.
④ 테이블의 구성은 아래의 캡처본을 기준으로 진행하겠습니다.
⑤ N개의 데이터들 중, idx_pk = 3인 데이터의 user_name의 값은 '성시경'입니다.
저는 이 데이터를 가져오겠습니다.
작성한 쿼리 : SELECT user_name FROM user_info WHERE idx_pk = 3;
⑥ 마지막으로 중복되지 않도록 작성한 쿼리에 이름을 지정해서 id에 작성해주면 된다.
⑦ user_name의 자료형은 varchar(문자열)이므로, resultType에는 String이 되어야한다.
⑧ id에는 명명규칙이 있는데, 일반적으로 SELECT쿼리는 getList, selectList 등 get이나 select를 접두사로 붙인다.
다음포스팅의 주제
'포트폴리오 > CCS' 카테고리의 다른 글
[프로젝트/JAVA] 6일차 - Controller, View (0) | 2021.06.25 |
---|---|
[프로젝트/JAVA] 6일차 - Service, Repository(DAO) (2) | 2021.06.20 |
[프로젝트/JAVA] 6일차 - 템플릿엔진(Thymeleaf) (0) | 2021.06.14 |
[프로젝트/DB] 5일차 - INSERT, UPDATE, SELECT, DELETE (0) | 2021.06.06 |
[프로젝트/DB] 5일차 - MySQL DB, Table 생성하기 (0) | 2021.06.02 |
댓글