송민준의 개발노트

Mybatis 동적 쿼리(like 사용 및 가변 컬럼 사용) 본문

DB

Mybatis 동적 쿼리(like 사용 및 가변 컬럼 사용)

송민준 2019. 12. 27. 10:57

가변컬럼

#{값} 과 ${값}의 차이

    #{값} : ''을 포함한 값을 반환    ex) 값이 field -> 'field'

    ${값} : 값만 반환                   ex) 값이 field -> field

컬럼을 변경하고 싶다면 ${값}을 쓰면된다. (아래 Like사용법에 예제 있음)

 

LIKE 사용법

 기본적으로 ibatis인가 mybatis인가에 따라 문법이 다르고 DB마다 또 문법이 다르다.

가장 대표적인 oracle과 mysql의 mybatis 버전 사용법에 대해서 기록하겠다.

Oracle

where ${field} like '%'||#{text}||'%'

MySql

where ${field} like CONCAT('%',#{text},'%')

 

마이 바티스에서 if, choose 사용법

<select id = "getSearchList" parameterType="map" resultType="member">
	select *
   	from (select rownum rnum, b.*
    	  from (selecct * from member
           	    where id != 'admin'
            <if test="search_field!=null">
                and
                <choose>
                  <when test="search_field=='id'">id</when>
                  <when test="search_field=='name'">name</when>
                  <when test="search_field=='age'">age</when>
                  <when test="search_field=='gender'">gender</when>
                </choose>
               like #{search_word}
             </if>
             order by id) b
          )
 </select>

 

* Element type "result" must be followed by either attribute specifications, ">" or "/>". 에러

<select id="count" parameterType="java.util.Map"resultType="int">

위 코드를 보면 resultType 앞이 공백이 없다. 아래처럼 띄워주면 해결됨

<select id="count" parameterType="java.util.Map" resultType="int">

'DB' 카테고리의 다른 글

테이블의 용량 초기화  (0) 2020.06.01
Nologging  (0) 2020.06.01
외래키 제약조건 걸린 테이블 삭제 방법  (0) 2019.12.24
간단한 프로시저 예제  (0) 2019.11.18
DB 계층구조(level)  (0) 2019.10.31