where 절에 in 으로 1개 또는 여러개의 값을 집어 넣어 검색 하는 방법이 있다. 


1. 

   SELECT * FROM ACT_RESL_MST WHERE ACCT_CD IN (SELECT ACCT_CD FROM ACT_ACCT_CD)


   이런 방식이다 하나의 컬럼을 출력 하는 쿼리 문을 IN 절에 집어 넣어 구현 하며 제일 구현 하기 쉬우며 풀스캔으로 메모리를 많이 먹는다 


2. 

    SELECT * FROM ACT_RESL_MST WHERE ACCT_CD IN ($SUPER_ACCT_CD$)

     

    로 파라미터를 넘기는 방법인데 기존의 ## 으로 묶어서 보내는 것이 아닌 $$ 으로 보내는 것이다 이것은 STATEMENT 와 PREPARESTATEMENT 의 차이로 알면 쉽다

      SUPER_ACCT_CD  파라미터의 값은 스트링 값은 반드시 ArrayList  또는 iterator 형식으로 넣어야 한다. 

  [

Map map = getLoginMap(request);

String temp_Incm_Cls = ((String)map.get("INCM_CD_CLS")).trim();

String[] rscherNo = temp_Incm_Cls.split(",");

List<String> rscherNo_List =Arrays.asList(rscherNo);

map.put("INCM_CD_CLS", rscherNo_List);


 ]



3. 

  SELECT * FROM ACT_RESL_MST 

 <dynamic prepend="WHERE">

         <isNotEmpty property= userNameList>

USERNAME IN 

      <iterate  property="userNameList" open="(" close=")" conjunction=",">

 #userNameList[]#

</iterate>

</isNotEmpty >

 </dynamic >


     이런식으로 직접적으로 LIST 형식 String 값을 map 에 담아 쿼리문에서 생성 하여 구현 한다 속도 측면에서는 가장 높으며 JAVA 단에서 LIST 형식으로 만드는

 작업을 해야 한다. 

설명 하자면 userNameList 라는 리스트에 1개 또는 그 이상 있을때 실행 되며 userNameList 안에는 그 수의 String 타입의 in 조건들이 있다 먼저 username 이 비어 있는지 확인 한후 값이 있다면 username IN 을 생성 한후 다음에 ( 값을 넣고 다음 값이 있는 경우 ',' 넣고 다 끈난 경우 ) 로 닫고 끈낸다. 


Posted by 사라링
BLOG main image
.. by 사라링

카테고리

사라링님의 노트 (301)
JSP (31)
J-Query (41)
JAVA (24)
VM-WARE (0)
디자인패턴 (1)
스크랩 (0)
스트러츠 (3)
안드로이드 (11)
오라클 (45)
우분투-오라클 (1)
이클립스메뉴얼 (6)
스프링3.0 (23)
자바스크립트 (10)
HTML5.0 (17)
정보처리기사 (1)
기타(컴퓨터 관련) (1)
문제점 해결 (3)
프로젝트 (2)
AJAX (4)
하이버네이트 (3)
트러스트폼 (11)
Jeus (2)
재무관리(회계) (5)
정규식 (5)
아이바티스 (8)
취미 (2)
소프트웨어 보안 관련모음 (0)
정보보안기사 (6)
C언어 베이직 및 프로그램 (3)
보안 관련 용어 정리 (2)
넥사크로 (6)
Total :
Today : Yesterday :