본문 바로가기

SPRING

mybatis 실습 - SELECT

1. IEmpDAO 인터페이스 작성

- 인터페이스를 통해 구현하고자 하는 메서드 작성

- mybatis에서는 메서드에 파라미터값이 들어오면 @Param 어노테이션을 이용해서

  xml의 #{ }에서 파라미터를 쓸 수 있게 해줘야함

 

 

 

2. IEmpDAO를 구현한 EmpMapper.xml 파일 작성 (JDBC의 DAO와 동일)

<select id=" " parameterType=" " resultType=" ">

     sql문 작성

     <if test="조건"> sql문 작성 </if> // 두 가지 이상의 쿼리문이 섞이면서 조건을 달아줘야할 경우 사용

</select>

 

- id : 구현하고자하는 인터페이스의 메서드명

- parameterType : 메서드에 파라미터가 있다면 그 파라미터의 자료형 / 쿼리문에 따라 선택적인 값

- resultType : sql문을 실행한 결과의 자료형 = 메서드의 리턴타입 / select 구문에서만 사용

 

2-1) 총 직원 수 조회 / 부서별 직원 수 조회

 

 

2-2) 총 직원 목록 조회 / 직원 한 명의 상세 정보 조회

Q) DB의 컬럼명과 VO객체의 필드명이 일치하지 않기 때문에 맞춰주는 과정 필요

 

A1) 직접 쿼리문 작성하기

- mybatis에서는 resultType에서 단일 자료형과 배열을 구분하지 않음

  따라서, 두 메서드 VO 객체의 배열과 VO 객체 메서드 모두 EmployeeVO로 받아온 것을 확인할 수 있음

 

첫 번째 방법 : 직접 쿼리문 작성하기

 

A2) xml 파일 내부에서 <resultMap> 태그 사용

- resultMap 태그는 VO 객체에 대한 양식을 마련하는 것
- 특정 컬럼을 VO 객체의 필드명으로 치환하는 양식을 미리 자료로 준비해둬서 이후에는 컬럼명 일치를 위해
긴 쿼리문을

  작성할 필요 없이 정해진 양식을 자료명으로 입력해주면 간단하게 쿼리문 일치 가능

 

<resultMap type="VO객체의 패키지 경로 및 이름" id="양식의 명칭"> 

      <result property="필드명" column="컬럼명" />

      <result property="필드명" column="컬럼명" /> .... 

</resultMap>

 

- type : VO 객체의 패키지 경로 및 이름
- id : 양식의 명칭, 변수명처럼 아무렇게나 쓰고싶은 이름 적기

- property: VO 객체의 필드명

- column 속성: DB에서 사용하는 컬럼명

 

두 번째 방법 : <resultMap> 사용하기

+ 위와 같은 조치를 하지 않으면 아래와 같은 출력 오류 발생

 

 

 

3. IEmpService 인터페이스 / EmpService 클래스 작성

- JDBC 작업 했을 때와 동일하게 작성

- DAO가 없는데 xml 만으로도 넘어올 수 있는 이유는

   1. xml에서 IEmpDAO를 이용해 구현했고, EmpService에 @Autowired 되어있는 것을 확인

   2.우리가 보기에는 xml 파일이어도 컴파일 되는 순간 xml 파일도 class 파일과 똑같음

 

 

4. Controller 작성

- Controller 단도 JDBC와 동일하게 진행되는 것을 확인

 

 

5. jsp 및 출력화면 생략

- JDBC와 동일하게 진행

'SPRING' 카테고리의 다른 글

mybatis 실습 - DELETE  (0) 2020.09.04
mybatis 실습 - INSERT  (0) 2020.09.04
JDBC 실습 - UPDATE  (0) 2020.09.02
JDBC 실습 - DELETE  (0) 2020.09.01
JDBC 실습 - INSERT  (0) 2020.09.01