donaricano-btn

Mapper 인터페이스(Mapper interface)

- SQL을 호출하는 프로그램을 타입 세이프 하게 기술하고자 할때

- Mapper 인터페이스를 사용하지 않으면, SQL을 호출하는 프로그램은 SqlSession의 메소드의 인수에 문자열로 namespace.SQL_ID 를 지정


1. Mapper 인터페이스 사용하지 않을 때

- 문자열로 지정하기 때문에 오타에 의한 버그가 숨어있다


2. Mapper 인터페이스 사용

- Mapper 인터페이스는 매핑 파일에 기술한 SQL자바의 인터페이스를 통해 지정

- PetMapper 인터페이스 = Mapper인터페이스 

- PetMapper 인터페이스는 개발자가 작성

1) PetMapper 인터페이스

2) Mapper 인터페이스 호출


3. 애노테이션

- Mapper 인터페이스는 애노테이션을 이용할 수 있다

- 매핑 파일에서 기술 했던 SQL이나 OR 매핑을 기술

1) 애노테이션

- 20 여개의 애노테이션이 있으며 동적 SQL은 적용되지 않는다

블로그 이미지

리딩리드

,
donaricano-btn

INSERT 시의 키 생성

- INSERT 할 때에 프라이머리 키를 기반으로 작성하면 보통 자동증가나 시퀀스를 사용한다

- 자동증가 : 자동 생성된 키의 값을 레코드 INSERT 후에 가져옴

- 시퀀스 : INSERT 전에 시퀀스 값 가져옴


1. 자동증가 사용

- 데이터베이스 쪽에 PET_ID 컬럼에 자동증가가 설정되어있다

1) 레코드 INSERT 다음에 생성된 키 값을 가져옴

- useGeneratedKeyskeyProperty 속성 설정

- 파라미터로서 전달된 Pet 오브젝트의 petId 프로퍼티에 생성된 키가 설정

2) SQL 호출

- SQL 호출 후에는 petId 값이 설정된다


2. 시퀀스 사용

- 데이터베이스 쪽에 PET_ID_SEQ라는 시퀀스 준비되어있다

- 안의 구문은 HSQLDB 용법이다

1) selectKey

- 키를 가져오는 SELECT 문을 기술 하기 위한 태그

- SQL의 실행 결과가 keyProperty에 지정한 프로퍼티에 설정된다

블로그 이미지

리딩리드

,
donaricano-btn

동적 SQL(Dynamic SQL)


1. 동적 SQL


- 만약 petName에 null 이라면?

 

- where 태그를 사용하면 WHERE 구문 처음에 붙은 "AND" 나 "OR" 자동으로 삭제된다

2. 동적이 SQL 태그

1) if

- 파라미터 조건에 따라 문자열 추가

- 필수 속성이 test에 기술

2) choose

- 자바의 switch

- when : 조건식과 조건에 적합한 때에 기술할 문자열을 설정, 여러개 기술가능

- otherwise :  when 태그 중 어느 조건에도 적합 하지 않다면 

3) trim 

- SQL 문의 문자열 부분적으로 치환

4) where

- WHERE 구문을 동적으로 생성

5) set

- UPDATE 문의 SET 구문을 동적으로 생성

6) foreeach 

- 반복해서 문자열 추가

블로그 이미지

리딩리드

,
donaricano-btn

SELECT 결과 매핑

- SELECT된 결과를 JavaBeans로의 변환을 매핑 파일로 기술


1. resultMap을 사용하지 않는 방법

1) Pet 오브젝트로 변환


- resultType속성에 변환할 Pet 클래스로 지정

- SELECT 의 컬럼 이름과 JavaBeans의 프로퍼티 이름같은 것이 연결되고 자동으로 Pet 오브젝트로 변환

- 컬럼이름과 프로퍼티 이름이 다르면 as 를 써서 맞춘다

2) SQL 호출(레코드 1)

 

- 레코드 결과가 1건 혹은 0 일 때 사용하는 selectOne

3) SQL호출(레코드 복수)

 


2. resultMap을 사용하는 방법

1) resultMap사용

 

- resultMap 속성값은 resultMap 태그의 id 속성

- 프라이머리 키의 프로퍼티는 id 태그를 사용

- 프로퍼티 이름과 컬럼 이름이 같은 result 태그 생략가능

- resultMap 태그에서 매핑한 내용은 복수의 select태그로 공유 가능

블로그 이미지

리딩리드

,