티스토리 뷰

Skill/postgreSQL

ANY 안에 실제 값 넣기

진열사랑 2026. 1. 28. 15:22

아래 mybatis xml에 값을 넘기기 위한 java 소스는 다음과 같다.

List<String> pnuList = msMapper.getPnu(param); 
result += snMapper.insertRcptrSwtrmt(fcltCd, levyYm, pnuList.toArray(new String[0]));

 

pnuList.toArray(new String[0]) 에 대해 자세히 보자..

List의 메서드 toArray(T[] a)는 다음 규칙으로 동작해요.

  • 전달한 배열 a의 길이가 리스트 크기보다 작으면
    • 리스트 크기에 맞는 새 배열을 내부에서 만들어서 거기에 담아 반환
  • 전달한 배열 길이가 리스트 크기보다 크거나 같으면
    • 그 배열 a를 그대로 사용해서 채우고 반환 (남는 칸은 null)

즉, new String[0]은 길이가 0이라서 항상 “작음” → 필요한 크기의 새 String[]을 만들어 반환합니다.

------
and (ctpv_cd || sgg_cd || dng_cd) = ANY(#{codeList}::text[])
위 문장은 mybatis 안의 문장이다.

실제로 값을 넣어보기 위한 Dbeaver에서 넣는 문장은 다음과 같다.

 

AND (ctpv_cd || sgg_cd || dng_cd) = ANY(
    ARRAY['11010101', '11010102', '26020103']
)

AND (ctpv_cd || sgg_cd || dng_cd) = ANY(
    ARRAY['11010101', '11010102']::text[]
)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함