본문 바로가기

[MyBatis] mapper.xml 작성법 알아보기

인포꿀팁 발행일 : 2020-12-04

마이바티스-mapper.xml

 

mybatis select 태그에 대해서 궁금하다면?

 

mybatis select 태그 정리

매퍼 파일 안에 있는 태그는 데이터베이스로부터 데이터를 조회하는 SQL 쿼리를 정의합니다. 태그의 주요 속성과 사용 방법을 자세히 알려드리겠습니다. mybatis의 mapper.xml 작성법은? [MyBatis] mapper.

back-end-developer.tistory.com

 

MyBatis의 mapper 속성의 특징

  • - #{필드명} : ?로 치환되고 preparedStatement 객체로 실행
    • 동적인 값을 DB에 저장할때는 반드시 #{필드명} 사용해야함
  • - ${컬럼명 또는 테이블명} : DB에 저장하거나 검색할 컬럼명 또는 테이블명이 동적인 경우 사용 
    • ( 값을 나타내는 부분에서 사용시 에러 발생
  • - CLOB 검색에서는 DBMS_LOB.INSTR() 함수로 이동
    •  DBMS_LOB.INSTR(컬럼명, #{keyword}) > 0 
  • - VARCHAR2는 INSTR(컬럼명, #{keyword})를 이용하여 검색
  • - INSTR(컬럼명, #{keyword}) 대신 LIKE 를 사용하는 경우
    • 컬럼명 LIKE '%' || #{keyword} || '%'

 

아래 파일은 mybatis 예제 파일입니다. 참고하시면서 보시기 바랍니다.

 

MYBATIS-MAPPER.xml
0.00MB

 

 

 

예제들을 통해 알아보기

1) #{prop} 으로 파라미터 넘겨 받기

 

 

기존 servlet을 이용한 DB와의 연동 방식에서는 Connection을 통해 연결이후 preparedStatement 객체를 생성하여 쿼리문에 ?를 삽입하여 해당 위치 index에 맞게 값을 삽입하는 방식으로 사용했엇다.

하지만 mybatis에서는 #{ 파라미터 } 를 넘겨 받는다.

기존에는 preparedStatement 메소드를 이용하여 값을 하나씩 넘겼다면

마이 바티스는 조금더 간단하게 쿼리문 태그에 parameterType에 넘겨받는 파라미터값을 지정하면된다.

만일 쿼리가 select와 같은 넘겨받는 값이 있는 경우 resultType에 념겨받는 값들을 정의해주면 쉽게 넘겨받을 수 있다.

2) 중복적인 where절 처리하기

 

쿼리문을 작성하다보면 중복적인 where절 쿼리를 처리하는 경우가 많다. 이전 방식에서는 모두 where을 삽입해야만 했지만 mybatis에서는 sql태그에 중복적인 쿼리를 적어두고 해당 코드를 상속받는 방식으로 중복적인 코드를 간결하게 할 수 있다,

먼저 sql태그를 통해 id를 주어 안에 조건에 따라 달라진 쿼리문을 작성한다.
그리고 해당 쿼리가 필요한 경우 include 태그를 통해 해당 쿼리를 실행할 수 있게 된다,

3) 부등호 처리는  < > 이 아닌 비교 표현식인 gt; lt; 와 같이 표기하기

 

마이바티스 자체가 xml 기반으로 환경세팅이 되기 때문에 자칫하면 부등호를 태그로 인식하는 경우가 발생할 수 있다. 만일 오류가 생긴다면 서버 자체가 켜지지 않는 일이 발생하기 때문에 이를 방지하고자 비교 표현식으로 대체하여 작성한다. 이때 주의할점은 비교표현식을 사용할때 그 다음에 오는 문자는 반드시 띄어쓰기를 하고 작성해야한다는 점이다.

4) 동적인 파라미터 값을 처리할때는 ${ 동적인 파라미터 } 사용하기

 

어떠한 쿼리를 실행시 조건절에 다양한 값이 와야할 때가 있다. 이럴때 동적인 파라미터를 처리해주는 ${}을 사용하게 되면 하나의 쿼리문으로 여러 기능을 수행할 수 있게된다. 단 사용시 매퍼로 넘어오는 파라미터값에 ${}에 들어갈 파라미터 값을 정의해줘야만 한다.

위와 같이 넘겨줄때 지정해둔 이름 field에 값을 넘겨주어야 한다.

'DB > Mybatis' 카테고리의 다른 글

ibatis mybatis 차이점 총정리!  (0) 2023.05.16
[마이바티스] mybatis # $ 사용법  (0) 2023.05.16
mybatis select 태그 정리  (0) 2023.05.15
[MyBatis] MyBatis 환경설정 세팅  (0) 2020.12.01

댓글