[DB] Mapper.xml에서 사용하는 속성들

    728x90
    반응형

    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 이름"' 과 같은 형식으로 입력한다.

    728x90
    반응형

    댓글