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태그로 공유 가능

블로그 이미지

리딩리드

,
donaricano-btn

SQL Parameter binding


1. 파라미터 하나일 때


1) parameterType

- 파라미터 타입 지정

- 내장된 별명 int

2) 바인드 변수명

- 하나일 때는 아무거나 지정해도 상관없다


2. 파라미터 복수

1) JavaBeans를 지정하는 방법

 

- paramterType의 별명 Pet 지정(sample.domain.Pet)

- JavaBeans의 프로퍼티 명으로 한다

- SQL호출시 

 

2) Map으로 바인딩

 

- parameterType에 별명 hashmap 지정(java.util.HashMap)

- 복수의 JavaBeans를 전달 할 때도 사용한다(Owner, Pet)

 


블로그 이미지

리딩리드

,