본문 바로가기
회고

TIL_210730

코동이 2021. 8. 5.

1. Facts(사실, 객관)

- 회사 ftp 이미지파일 전송 구현 개선

2. Feelings(느낌, 주관)

- ftp 기술을 다 구현했다고 생각했는데, 빠뜨린 부분이 있었습니다. 주문번호, 문서번호, 날짜등으로 DB에 첨부파일명을 넣었었는데, 이 첨부파일명을 그냥 주문번호로 넣었습니다. 회사가 테스트코드 환경에서 작성이 가능했다면, 진작에 방어적인 코드를 만들 수 있었겠다는 아쉬움이 듭니다. 저는 로직을 일일이 확인하고 중간에 잘못한 부분이 없는지 로그로 확인을 해야 합니다. 테스트코드 책에서도 테스트코드를 작성하지 않아서 수정하는데 소요되는 시간이, 테스트코드를 작성해서 낭비하는 시간 없이 코드를 잘 작성하는 시간보다 오래 걸린다는 말이 기억이 납니다. 또한 FTP 기능이 사용될 곳으로 예상도는 여러 군데를 한번에 수정해서 제대로 컴파일 되지 않는 부분들이 우후죽순으로 생겼습니다. 이 역시 테스트코드가 있었다면 어땠을까 아쉬움이 듭니다.

 

- 프로시저를 사용하면서 프로시저 동작 원리와 mybatis와 연동하여 사용하는 법을 익혔습니다. 프로시저 내부에서 만든 주문번호가 필요했었는데, 이것이 리턴도 가능하다는 것을 알았습니다. 말로만 듣던 프로시저, 예전에는 굉장히 어렵고 복잡해보였지만 구조를 파악하고 나서는 오히려 규칙이 정해져있고 잘 따르면 되기 때문에 앞으로 유용하게 사용할 수 있을 것 같습니다.

 

3. Findings (배운 점)

 

myBatis에서 procedure를 호출하고 그 반환 값을 넣는 방법에 대해 알아본다.

<insert id="saleAdd" statementType="CALLABLE" parameterType="com.cm.vo.SaleaddVo">
       { call
          HRCS.PR_HOMEPAGE_SALEADD_NEW3(
             #{modelcode, mode=IN ,jdbcType=VARCHAR}
            ,#{custname, mode=IN, jdbcType=VARCHAR}
            ,#{tel, mode=IN, jdbcType=VARCHAR}
            ,#{calltype, mode=IN, jdbcType=VARCHAR}
            ,#{memo, mode=IN, jdbcType=VARCHAR}
            ,#{asianaMemNo, mode=IN, jdbcType=VARCHAR}
            ,#{emp_sale_add1, mode=IN, jdbcType=VARCHAR}
            ,#{expire_date, mode=IN, jdbcType=VARCHAR}
            ,#{emp_recmnder, mode=IN, jdbcType=VARCHAR}
            ,#{emp_company, mode=IN, jdbcType=VARCHAR}
            ,#{emp_id, mode=IN, jdbcType=VARCHAR}
            ,#{emp_phone, mode=IN, jdbcType=VARCHAR}            
            ,#{selltype, mode=IN, jdbcType=VARCHAR}
            ,#{seqNo, mode=IN, jdbcType=VARCHAR}
            ,#{cwtrHpYn, mode=IN, jdbcType=VARCHAR}	
            ,#{outCode, mode=OUT, jdbcType=VARCHAR}
          )
        }
</insert>

outCode가 mode=OUT이기 때문에, 해당 칼럼은 프로시져 내에서 값이 할당이 된 이후 parameterType으로 전달된 SaleaddVo를 통해서 다시 나온다. 따라서, SaleaddVo에서 getOutCode()를 통해서 호출이 가능하다.

 

@Override
public String insertOrder(QumingVo paramVo, SaleaddVo saleaddVo) {	
 hrentDao.insert("mapper.product.saleAdd", saleaddVo);
 String ord_no = saleaddVo.getOutCode();
 return ord_no;
}

프로시저 내부에 새롭게 만들었던 주문번호 ord_no를 이제 saleaddVo.getOutCode(); 로 호출이 가능하다.

반응형

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

TIL_210803  (0) 2021.08.05
TIL_210802  (0) 2021.08.05
TIL_210729  (0) 2021.07.30
TIL_210728  (0) 2021.07.30
TIL_210727  (0) 2021.07.30