목차
1. 게시글 수정 쿼리란?
2. <update> 태그
2-1. <update> 태그 기본 구조
2-2. UPDATE 문의 기본 구조
3. 전체 코드 정리
4. 마무리하며
1. 게시글 수정 쿼리란?
게시판 기능에서 수정(Update) 은 사용자가 작성한 글의 내용을 변경하는 기능입니다.
게시글을 등록(insert)하는 것과는 달리 이미 데이터베이스에 저장되어 있는 값을 변경하는 작업이라는 점이 가장 큰 차이입니다.
2. <update> 태그
MyBatis에서 데이터 수정은 <update> 태그를 사용하여 구현합니다.
<insert>, <select>와 마찬가지로 XML 내부에서 SQL을 작성하고 id 값을 기준으로 해당 쿼리를 구분하여 호출하는 구조입니다.
즉, <update> 태그 안에는 실제로 실행될 UPDATE SQL 문이 작성됩니다.
2-1. <update> 태그 기본 구조
먼저 <update> 태그의 기본 구조를 살펴보겠습니다.
<update id="아이디명" parameterType="파라미터타입">
UPDATE 테이블명
SET 컬럼 = 값
WHERE 조건
</update>
구성 요소는 다음과 같습니다.
- id : 해당 쿼리를 구분하는 이름 (DAO에서 호출할 때 사용)
- parameterType : 전달받는 객체 또는 타입 지정
- 내부 SQL : 실제로 실행될 UPDATE 문
아래는 이번 게시판 수정 기능에서 사용한 코드입니다.
<update id="update" parameterType="com.visit.board.vo.BoardVo">
UPDATE BOARD_POST_TB
SET
USER_NM = #{userNm},
USER_PW = #{userPw},
TITLE = #{title},
CONTENT = #{content},
MOD_DT = NOW()
WHERE POST_ID = #{postId}
</update>
이제 위 코드의 속성과 내부 구조를 하나씩 살펴보겠습니다.
2-2. UPDATE 문의 기본 구조
<update> 태그 내부에는 일반적인 SQL UPDATE 문을 작성합니다.
UPDATE 문의 기본 구조는 다음과 같습니다.
UPDATE 테이블명
SET 컬럼 = 값
WHERE 조건;
[SET 절]
SET 절은 어떤 컬럼의 값을 변경할 것인지를 지정하는 영역입니다.
변경을 원하는 컬럼들을 쉼표( , )로 나열하여 동시에 수정할 수 있습니다.
[WHERE 조건]
WHERE 절은 어떤 데이터를 수정할 것인지를 지정하는 조건입니다.
WHERE POST_ID = #{postId}
위 조건이 있기 때문에 특정 POST_ID 를 가진 게시글 한 건만 수정됩니다.
❗ 만약 WHERE 조건이 없다면 테이블의 모든 행이 수정될 수 있으므로 반드시 주의해야 합니다.
3. 전체 코드 정리
지금까지 살펴본 내용을 바탕으로 지금까지 작업된 board-mapper.xml 의 전체 소스를 정리해보겠습니다.
<?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>
<!-- 게시글 삽입 -->
<insert id="insert"
parameterType="com.visit.board.vo.BoardVo"
useGeneratedKeys="true"
keyProperty="postId">
INSERT INTO BOARD_POST_TB
(USER_NM, USER_PW, TITLE, CONTENT, REG_DT)
VALUES
(#{userNm}, #{userPw}, #{title}, #{content}, NOW())
</insert>
<!-- 게시글 상세보기 -->
<select id="selectById"
parameterType="int"
resultType="com.visit.board.vo.BoardVo">
SELECT
POST_ID AS postId,
USER_NM AS userNm,
USER_PW AS userPw,
VIEW_CNT AS viewCnt,
REG_DT AS regDt,
MOD_DT AS modDt,
TITLE,
CONTENT
FROM BOARD_POST_TB
WHERE POST_ID = #{postId}
</select>
<!-- 게시글 수정 -->
<update id="update"
parameterType="com.visit.board.vo.BoardVo">
UPDATE BOARD_POST_TB
SET
USER_NM = #{userNm},
USER_PW = #{userPw},
TITLE = #{title},
CONTENT = #{content},
MOD_DT = NOW()
WHERE POST_ID = #{postId}
</update>
</mapper>
4. 마무리하며
이번 글에서는 MyBatis의 <update> 태그를 이용하여 게시글 수정 기능을 구현하는 방법을 살펴보았습니다.
UPDATE 문에서는 특히 수정 대상이 명확하게 지정되어야 하므로 WHERE 조건을 정확하게 작성하는 것이 매우 중요합니다.
게시판 기능에서 수정이란, 단순이 값을 바꾸는 작업이 아니라 이미 저장된 데이터를 변경하는 작업이기 때문에 구조를 정확히 이해하고 작성해야 합니다.
📌 참고
[개발 실습/CRUD 게시판 만들기] - 21. 게시판 글 작성 백단 구현 : board-mapper.xml (insert)
21. 게시판 글 작성 백단 구현 : board-mapper.xml (insert)
목차1. 게시글 등록 쿼리란?2. 코드 살펴보기 2-1. 태그 구조 2-2. parameterType 2-3. #{ } 파라미터 매핑 2-4. useGeneratedKeys와 keyProperty 2-5. 게시글 등록 SQL3. 실습4. 마무리하며1. 게시글 등록 쿼리란?앞선 글
silverji.tistory.com
'개발 실습 > CRUD 게시판 만들기' 카테고리의 다른 글
| 21. 게시판 글 작성 백단 구현 : board-mapper.xml (insert) (2) | 2026.02.08 |
|---|---|
| 20. 게시판 목록 백단 구현 : BoardListServlet 동작 원리 분석 (2) | 2025.12.14 |
| 19. 게시판 백엔드 기초 : BoardDao로 게시글 목록 조회 기능 구현하기 (7) | 2025.11.22 |
| 18. 게시판 백엔드 기초 : board-mapper.xml로 매핑 구조 이해하기 (7) | 2025.11.01 |
| 17. 게시판 백엔드 기초 : BoardVo.java로 데이터 객체 이해하기 (12) | 2025.10.25 |