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에서 사용하는 컬럼명
+ 위와 같은 조치를 하지 않으면 아래와 같은 출력 오류 발생
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 |