본문 바로가기

이론정리

Mapper란?

개요

Mybatis에서 사용되며 매핑 파일에 기재된 SQL문을 호출하기 위한 인터페이스이다. 

 

구조

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="boardMapper">

	<select id="getBoardList" resultType="BoardPostVO">
		SELECT 
			POST_NO, 
			TITLE, 
			NICK_NAME, 
			POSTING_DATE 
		FROM board_post 
		ORDER BY POST_NO DESC;
	</select>
	
	<select id="getContent"  resultType="BoardPostVO">
		<![CDATA[
			SELECT *
			FROM board_post
			WHERE POST_NO = #{post_no}
		]]>
	</select>
	
 	<!-- 게시판 글 작성 -->
 	<insert id = "insertBoard">
 		<![CDATA[
	 		INSERT INTO 
	 			BOARD_POST(TITLE, CONTENTS, NICK_NAME)
		    VALUE (#{title}, #{contents}, #{nick_name})
	    ]]>
 	</insert>
 	
 	<update id="updateBoard">
 		<![CDATA[
 			UPDATE board_post 
 			SET
 				title = #{title}
 				content = #{content}
 			WHERE post_no = #{post_no}
 		]]>
 	</update>
 	
 	<delete id="deleteBoard">
 		<![CDATA[
 			DELETE FROM board_post
 			WHERE post_no = #{post_no}
 		]]>
 	</delete>
</mapper>
package kr.co.myboard.dao;

import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import kr.co.myboard.vo.BoardPostVO;

@Repository
public class BoardPostDAO {
	@Autowired
	private SqlSessionTemplate mybatis;
	
	public void insertBoard(BoardPostVO vo) {
		System.out.println("===> Mybatis로 insertBoard() 기능 처리");
		mybatis.insert("boardMapper.inserBoard",vo);
	}
	
	public void updateBoard(BoardPostVO vo) {
		System.out.println("===> Mybatis로 updateBoard() 기능 처리");
		mybatis.insert("boardMapper.updateBoard",vo);
	}
	
	public void deleteBoard(BoardPostVO vo) {
		System.out.println("===> Mybatis로 deleteBoard() 기능 처리");
		mybatis.delete("boardMapper.deleteBoard",vo);
	}
	
	public BoardPostVO getContent(BoardPostVO vo) {
		System.out.println("===> Mybatis로 getContent() 기능 처리");
		return (BoardPostVO) mybatis.selectOne("boardMapper.getContent", vo);		
	}

	public List<BoardPostVO> getBoardList() {
		System.out.println("===> Mybatis로 getBoardList() 기능 처리");
		return mybatis.selectList("boardMapper.getBoardList");		
	}
}

dao 클래스에서 "mapper namespce.id"형식으로 매퍼의 SQL문을 찾아간다.

 

mapper의 태그

select: 데이터베이스에서 resultType에 정의된 형식으로 데이터를 가져온다. 

insert, update, delete: 데이터를 변경하는 구문인 insert, update, delete SQL에 대한 매퍼

 

<![CDATA[...]]>: 이란 character data라는 뜻으로 감싸고 있는 영역의 문자들이 xml에서 특수한 기능을 수행하는 문자가 아닌 단순 문자임을 나타낸다.

 

 

참고

mybatis.org/mybatis-3/ko/sqlmap-xml.html

 

MyBatis – 마이바티스 3 | 매퍼 XML 파일

Mapper XML 파일 마이바티스의 가장 큰 장점은 매핑구문이다. 이건 간혹 마법을 부리는 것처럼 보일 수 있다. SQL Map XML 파일은 상대적으로 간단하다. 더군다나 동일한 기능의 JDBC 코드와 비교하면

mybatis.org

 

'이론정리' 카테고리의 다른 글

web.xml, root-context.xml, servlet-context.xml 이란?  (0) 2020.11.15
JUnit이란  (0) 2020.11.15
pom.xml(Project Option Model)이란  (0) 2020.11.15