본문 바로가기
회고

TIL_211028

코동이 2021. 10. 28.

1. Facts(사실, 객관)

 

- mybatis xml 쿼리문 작성하기

 

2. Feelings(느낌, 주관)

 

mybatis xml 쿼리문을 작성했습니다. 파라미터는 어떻게 넣는지, 리턴타입은 어떻게 받는지, 또 리스트로 넘어갔다면 어떻게 해야할지? 고민이 되었습니다. 회사에 있는 대부분 프로젝트는 List 자체를 파라미터로 넘기지 않습니다. 아무래도 내부적으로 다시 foreach를 돌리는 것이 공장히 번거롭기 때문일 것입니다. 따라서, List에서 단일 객체를 순차적으로 쿼리로 돌리는 방법을 사용하고 있습니다. 이렇게 하는 것이 오히려 혼란 방지를 한다는 점에서 좋다고 생각합니다. 자동으로 sequence가 증가하기 위해서 oracle은 어떻게 해야하는지도 알 수 있었습니다. 한가지 방식만 계속 고집해서 사용하는 것이 좋은가? 다양한 방법을 시도해볼까? 생각도 했지만, 실제 프로젝트에서는 일관성을 가지기로 합니다.

 

3. Findings (배운 점)

<insert id='insertDeliveryStatusToDeliveryFinished' parameterType="com.starmark.adm.payment.vo.Payment">
		<selectKey keyProperty="status_seq" resultType="string" order="BEFORE">
			SELECT SEQ_STATUS.NEXTVAL FROM DUAL
		</selectKey>
		INSERT INTO 
			T_PAY_STATUS(
				STATUS_SEQ,
				ONLN_BILL_NO, 
				CONTENTS, 
				REG_DT, 
				UP_DT, 
				REG_SEQ, 
				UP_SEQ
			)
			VALUES( 
				#{status_seq},  
				#{onln_bill_no},  
				'배송완료', 
				sysdate, 
				sysdate,  
				#{reg_seq},  
				#{up_seq}
			)
	</insert>

 

parameterType을 쓸 때, 모든 패키지명까지 써주어야 한다. 너무 길기 때문에 xml 상단에 따로 정의하는 경우도 있다. 지금은 리턴형이 없지만 resultType 또한 마찬가지로 패키지명까지 모두 써주어야 한다. 

 

오라클에서는 sequence를 1 증가시키는 방법으로 NEXTVAL을 사용한다. <selectKey></selectKey>를 사용한다. SELECT SEQ_STATUS.NEXTVAL FROM DUAL라는 쿼리를 감싸고 있는데, 일종의 규칙으로 알고있으면 된다.

 

 

SELECT 
        * 
     FROM 
        T_PAY_STATUS 
     WHERE  
        UP_DT IN (
                  SELECT 
                    MAX(UP_DT) 
                  FROM 
                    T_PAY_STATUS 
                  GROUP BY 
                    ONLN_BILL_NO
                  )
      ) STATUS

 

배송정보가 바뀔 때, 수정이 아니라 새로운 데이터로 DB에 저장되는 경우가 있다. 이런경우, 각 배송의 최종 배송상태를 알기 위해서 어떻게 해야 할까? GROUP BY로 배송번호를 묶어서 처리해야할까? 한번에 가져올 수 있으면 좋겠지만, 최신의 수정날짜를 가져올 기준이 없다. 따라서, WHERE에서 내부쿼리를 사용해, 한번 더 정제한 다음에 조회하는 방법을 사용하면 된다.

 

4. Affirmation (자기 선언)

- 나는 기존의 방식을 당연하게 계속 사용하기보다는 다양한 방식으로 코딩을 고민하는 사람이다.

반응형

'회고' 카테고리의 다른 글

TIL_211109  (0) 2021.11.10
TIL_211108  (0) 2021.11.09
TIL_211027  (0) 2021.10.27
TIL_211024  (0) 2021.10.25
TIL_211022  (0) 2021.10.22