[STS] MyBatis

안아현·2024년 8월 13일

Spring

목록 보기
3/13

MyBatis

  1. 개요
  • 개념
    MyBatis는 SQL Mapping 프레임워크의 일종으로, 전통적인 JDBC 프로그래밍을 대신한다. 기존의 JDBC는 Connection, PreparedStatement, ResultSet 객체를 직접 생성하고 처리해야 했다. MyBatis는 Connection, PreparedStatement, ResultSet 객체를 자동으로 생성, 처리한다.

  • SQLSessionFactory
    SQLSession을 생성하는 객체이다. SQLSession은 Connection 객체를 생성할 때, SQL Query를 전달할 때, SQL Query의 실행결과를 리턴할 때 사용된다.




2. Mapper

  • 개념
    Mapper 사용 방법은 크게 두 가지로 나뉜다. 인터페이스와 xml이다. 인터페이스만 사용하는 경우, 편리성이 뛰어나지만 복잡하거나 긴 쿼리를 처리하기에는 무리가 있다.
  • 해당 문서는 일반게시판을 기준으로 작성되므로 board를 사용할 것이다.
  • 인터페이스와 메서드명은 자유롭게 설정가능하지만, 현재 작성하는 프로젝트 또는 쿼리문과 관련성이 있도록 작성하는 것이 좋다.
  • Mapper Interface
    Mapper.xml을 사용하기 위해서는 Interface가 존재해야 한다. src/main/resources 패키지에 org 폴더 아래에 mapper 폴더를 생성하여야 한다. Mapper Interface의 이름은 자유롭게 설정해도 된다. Mapper Interface는 문자 그대로 인터페이스이므로 추상 메서드를 가지는데, 이때 사용한 메서드명이 Mapper.xml의 SQL 쿼리문의 ID와 동일해야 한다.

  • Mapper.xml
    Mapper.xml은 Mapper Interface의 추상메서드를 구체화하는 파일이라고 생각하면 이해하기 쉽다. 앞에서 설명한 바와 같이 인터페이스의 추상 메서드명과 xml 쿼리문의 id가 동일해야 한다.

*Mapper Interface
public Integer write(BoardVO vo);


**Mapper.xml
  < select id="write" >
  	//쿼리문
  < /select >

Interface의 메서드명과 xml 쿼리의 id가 같은 걸 확인할 수 있다.

  • 사용방법
    Controller 단에서 Mapper 객체를 생성한 뒤, Mapper.write(vo)를 호출하면 Mapper.xml에서 id가 write인 쿼리문이 실행된다.

  • CDATA
    Mapper.xml은 문자 그대로 xml 파일이다. xml 파일에서 비교연산자(>, <)와 앰퍼샌드(&)는 큰 의미를 갖는다. 가령 글 번호(column no)가 100이상인 글에 대해서만 리스트를 출력하고 싶은 경우, xml은 다음과 같다.

<select id="list">
	select no, title, writer from board where no > 99
</select>

이 코드와 같이 별도의 처리 없이 비교 연산자를 사용할 경우 실행 중 문제가 발생할 수 있다.

이때 사용하는 것이 CDATA이다. CDATA를 사용하면 섹션 내의 코드를 문자열로 간주하므로 문제 없이 코드가 실행된다.

<select id="list">
	<![CDATA[
    	select no, title, writer from board where no > 99
    ]]>
</select>
profile
programming

0개의 댓글