목차
1. board-mapper.xml 이란?
2. 파일 생성하기
3. 코드 살펴보기
3-1. Mapper 파일 구조
3-2. namespace와 id
3-3. resultType와 SQL 매핑
3-4. 게시글 전체 조회 쿼리
4. 마무리하며
1. board-mapper.xml 이란?
MyBatis에서는 자바 코드 안에 직접 SQL을 작성하지 않고 XML 파일로 쿼리를 별도로 관리할 수 있습니다.
이 XML 파일을 바로 Mapper(매퍼)라고 합니다.
매퍼는 DAO와 DB 사이에서 다음과 같은 역할을 합니다.
- SQL 쿼리 작성 및 관리
- 쿼리 결과를 VO 객체에 매핑
- DAO에서 호출할 수 있는 쿼리 ID 제공
즉, 매퍼는 DAO가 DB와 통신할 때 어떤 쿼리를 실행하고 어떤 객체에 담을지를 알려주는 중간 연결자 역할을 합니다.
2. 파일 생성하기
파일 생성하는 법은 이전 글에서 다뤘으니, 이번에는 간단하게 경로와 이름만 정리하고 넘어가겠습니다.
📌 참고의 링크 확인 바랍니다.

3. 코드 살펴보기
아래는 게시글 전체 조회 기능을 담당하는 selectAll 쿼리입니다.
게시글 목록 화면에 데이터를 뿌리기 위해 작성했습니다.
이제 이 코드를 하나씩 살펴보겠습니다.
<?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="board">
<!-- 게시글 전체 조회 -->
<select id="selectAll" resultType="com.visit.board.vo.BoardVo">
SELECT
POST_ID AS postId,
USER_NM AS userNm,
USER_PW AS userPw,
DATE_FORMAT(REG_DT, '%Y-%m-%d') AS regDt,
DATE_FORMAT(MOD_DT, '%Y-%m-%d') AS modDt,
TITLE,
CONTENT
FROM BOARD_POST_TB
ORDER BY POST_ID DESC
</select>
</mapper>
3-1. Mapper 파일 구조
<mapper> 태그는 매퍼 파일의 루트(root) 태그입니다.
이 안에는 SQL 문을 정의하는 <select>, <insert>, <update>, <delete> 등이 포함됩니다.
3-2. namespace와 id
<namespace> 속성은 DAO에서 매퍼를 호출할 때 사용할 이름을 지정하기 위해 사용합니다.
매퍼 파일의 고유 이름으로, DAO에서 board.selectAll와 같은 형식으로 호출합니다.
<id> 속성은 각 SQL문을 구분하는 고유 식별자입니다.
하나의 Mapper 파일 안에는 여러 쿼리가 존재하기에 id를 주어서 각 쿼리를 구분할 수 있습니다.
DAO에서 특정 기능을 호출할 때는 namespace.id 형태를 사용하며 이를 통해 어떤 매퍼의 어떤 SQL을 실행할지를 명확하게 지정할 수 있습니다.
3-3. resultType와 SQL 매핑
resultType은 SQL 결과를 어떤 VO 객체에 담을지를 결정합니다.
이번 예제에서는 com.visit.voard.vo.BoardVo 로 설정되어 있기에 조회된 각 행이 자동으로 BoardVo 객체에 매핑됩니다.
예를 들면 다음과 같습니다.
- POST_ID : postId
- USER_NM : userNm
- REG_DT : regDt
이런 식으로 DB 컬럼명이 VO 필드명과 매핑되며 JAVA 코드에서 조회된 데이터를 바로 활용할 수 있게 됩니다.
3-4. 게시글 전체 조회 쿼리
이제 쿼리를 자세히 살펴보겠습니다.
SELECT
POST_ID AS postId,
USER_NM AS userNm,
USER_PW AS userPw,
DATE_FORMAT(REG_DT, '%Y-%m-%d') AS regDt,
DATE_FORMAT(MOD_DT, '%Y-%m-%d') AS modDt,
TITLE,
CONTENT
FROM BOARD_POST_TB
ORDER BY POST_ID DESC;
AS 키워드를 사용해 DB 컬럼명과 VO 필드명을 맞춰주고
DATE_FORMAT을 이용해 REG_DT와 MOD_DT의 날짜 형식을 통일했습니다.
또한, ORDER BY POST_ID DESC 를 통해 최신 글이 가장 위에 나오도록 정렬했습니다.
4. 마무리하며
이번 글에서는 board-mapper.xml 의 역할과 구조를 살펴보았습니다.
다음 단계에서는 DAO 파일을 통해 이 매퍼를 실제 자바 코드에서 호출하고 데이터를 가져오는 과정을 다뤄보겠습니다.
여기까지 수고하셨습니다.
감사합니다.
📌 참고
파일 생성하는 법
https://silverji.tistory.com/257
[JAVA]8. 게시판 목록 화면 틀 잡기
드디어 본격적으로 게시판 만들기를 들어가겠습니다.방명록 느낌으로 간단한 CRUD 화면을 작업할 예정인데요.Spring 연동 없이 오리지널 Servlet 으로 작업할겁니다.Servlet 의 구조를 파악하면서 기
silverji.tistory.com
'개발 실습 > CRUD 게시판 만들기' 카테고리의 다른 글
| 20. 게시판 목록 백단 구현 : BoardListServlet 동작 원리 분석 (1) | 2025.12.14 |
|---|---|
| 19. 게시판 백엔드 기초 : BoardDao로 게시글 목록 조회 기능 구현하기 (7) | 2025.11.22 |
| 17. 게시판 백엔드 기초 : BoardVo.java로 데이터 객체 이해하기 (12) | 2025.10.25 |
| 16. 게시판 상세보기 화면 구현 : 버튼, 삭제, 필수입력(required), 강조(strong) 활용 (8) | 2025.10.18 |
| [JAVA]15. 게시판 작성 화면 구현 : JSP 입력 폼(form) 구성 (28) | 2025.08.30 |