2021.03.16
6일차
입사 9일차.
나는 운이 좋은게 확실하다. 입사한지 1주일만에 금융권 개발에 참여하게 되었다.
허락을 받고 @Controller, @Repository, @Service, Mapper.xml 파일들을 열어볼 수 있게 되었는데,
덕분에 자주 쓰는 메소드나 속성들을 볼 수 있었다.
1. useGeneratedKeys
▶ 기존에 MySQL과 연결한 Mapper.xml에서 작업할 때는 id나 PK 설계시
'SELECT ( IFNULL(컬럼, 초기값) + 1 ) ~ ' 이런식으로 작업을 진행했었다.
하지만 useGeneratedKeys를 사용하면 쉽게 값을 증가시킬 수 있다.
ex)
<insert id="insertData" parameterType="VO" useGeneratedKeys="true" keyProperty="selectKey 이름">
<selectKey keyProperty="keyProperty 이름" resultType="" order="BEFORE">
SELECT NEXTVAL('컬럼')
</selectKey>
① 어떤 컬럼을 증가시킬지 컬럼을 선정한다.
② 선정한 컬럼의 컬럼명을 keyProperty와 NEXTVAL()에 작성한다.
③ insert 태그안에 useGeneratedKeys="true"를 작성한다
2. trim
▶ SQL구문 작성시, 파라미터 안에 값이 없거나 IF를 만족하지 않아서 값이 제대로 전달되지 않을때 발생하는 오류를
잡기위해 사용하는 동적 SQL구문
ex)
<trim prefix="맨 앞에 작성할 구문" suffixOverrides="삭제할 구문" suffix="맨 마지막에 작성할 구문">
컬럼1 = #{입력값1, 조건}, ...
</trim>
① prifix="String" 는 trim태그안의 SQL문 앞에 문자를 붙여준다. ( CONCAT과 같음 )
② suffix="String" 는 trim태그안의 SQL문 뒤에 문자를 붙여준다. ( CONCAT과 같음 )
③ suffixOverrides="String" 는 태그안의 SQL문에서 문자를 제거해준다. ( 찾아서 제거 )
3. resultMap
▶ 포트폴리오로 개발한 프로젝트는 SELECT의 resultType="VO"일때, 모든 컬럼에 AS를 붙여서 작성했었다.
하지만 <resultMap>에 미리 작성을 해놓으면 코드의 중복을 줄일 수 있다.
ex)
<resultMap id="resultMap 이름" type="데이터를 받을 VO">
<result property="컬럼명" property="VO에 작성한 field명" />
</resultMap>
① 위와 같이 작성한 resultMap은 SELECT문의 'resultMap="resultMap 이름"' 과 같은 형식으로 입력한다.
'데이터베이스' 카테고리의 다른 글
[Redis] Redis Starts with Docker And WebFlux(2) (0) | 2023.04.09 |
---|---|
[Redis] Redis Starts with Docker And WebFlux(1) (0) | 2023.04.02 |
[DB]SELECT - ORDER BY, WHERE, JOIN (0) | 2021.06.11 |
[DB] SyBase에서 사용하는 기능들 (0) | 2021.03.29 |
[DB] MySQL과 Oracle 문법 비교 (0) | 2021.03.13 |
댓글