IT/development

[mybatis] mybatis 동적 쿼리 작성 시 "," 관련

알 수 없는 사용자 2022. 11. 22. 07:05
반응형

목차

    사소할 수 있지만 이유를 몰라서 쿼리 작성 시 에러 때문에 시간을 잡아 먹어서 역시나 미래의 내가 보기위해 기록한다.

     

    예를 들어 위와 같은 쿼리가 있을 때 parameter값에 따라 동적으로 SQL을 생성 시 SELECT문 컬럼 뒤쪽에 ","를 넣으면 문법에러가 발생한다.

    넘어온 member_id값이 있으면 , mcm.etc가 붙는 데 만일 위의 쿼리가 아래와 같다면 동적 쿼리를 붙이질 못한다.

    select m.*,
    	   mcm.tag_type,
    	   mcm.tag_name,
    <if test="member id != null and member_id != ''">
    	   mcm.etc
    </if>
    FROM member m LEFT OUTER JOIN member_code_mapping ON m.member_seq = mcm.member_seq
    LIMIT #{start}, #{length}

    이 경우는 넘어온 member_id가 없으면 아래처럼 쿼리가 작성되서 문법 에러가 발생한다.

    select m.*,
    	   mcm.tag_type,
    	   mcm.tag_name,
    FROM member m LEFT OUTER JOIN member_code_mapping ON m.member_seq = mcm.member_seq
    ...

     

    동적 쿼리 작성 시에는 SELECT 컬럼 앞에 ","를 붙여서 아래처럼 작성해야 한다.

    select   m.*
    	   , mcm.tag_type,
    	   , mcm.tag_name
    FROM member m LEFT OUTER JOIN member_code_mapping ON m.member_seq = mcm.member_seq

     

     

    누구에게는 사소한 정보일 수 있지만 누구(정보를 몰랐던 나)에게는 사소하지 않을 수 있기에 포스팅을 한다.

    반응형