[Mybatis / Oracle] LIKE 다중(여러 개 한 번에) 조회 방법 (REGEXP_LIKE)

·2022년 4월 3일
0

체크박스 중복 선택 값을 리스트로 받아왔는데 mybatis에서 foreach문이 적용이 계속 안 됐다.

List를 map에 넣고 collection에 파라미터명부터 list, map 등등 이것저것 다 해도 파라미터를 못 찾는다는 오류가 떴다. 일단 여기에 시간을 너무 많이 쏟아서...

약간 비효율적이지만 List를 반복문으로 String에 넣어주기로 했다.

REGEXP_LIKE 로 여러 단어를 조회하려면 단어마다 | 를 사이에 넣어줘야 한다고 해서 반복문 돌릴 때

|를 추가해주고 map에 담은 key, value를 동적 쿼리문에서 사용했다.

EX)

WHERE REGEXP_LIKE (B.BUSINESS_TYPE, #{map.type})
  AND REGEXP_LIKE (A.FACILITY_NAME, #{map.facility})

parameterType을 hashmap으로 지정했는데도 어떤 쿼리문에서는 바로 key값만( ex. #{type} ) 써서 됐는데 이번에는 또 앞에 #{map.type}처럼 map 을 붙여줘야 찾아왔다. 뭐가 문제지..? 이건 더 알아보고 추가해야겠다. (++ 수정하다보니 알게됐는데.. 넘어오는 인자가 여러 개여서 앞에 map이라고 지정을 안 해주면 map이랑 pi 리스트랑 같이 넘어와서 어디서 가져오는 지 몰라서 에러 뜬 것 같다...ㅎㅎ...)

REGEXP_LIKE 형식은 이렇다 👇

SELECT *
  FROM TABLE
 WHERE REGEXP_LIKE (컬럼명, '^[AB]')

SELECT *
  FROM TABLE
 WHERE REGEXP_LIKE (컬럼명, 'TEXT|TEXT|TEXT')

0개의 댓글