목차
1. 게시글 등록 쿼리란?
2. 코드 살펴보기
2-1. <insert> 태그 구조
2-2. parameterType
2-3. #{ } 파라미터 매핑
2-4. useGeneratedKeys와 keyProperty
2-5. 게시글 등록 SQL
3. 실습
4. 마무리하며
1. 게시글 등록 쿼리란?
앞선 글에서는 board-mapper.xml의 기본 구조와 게시글 목록을 조회하는 select 쿼리를 살펴보았습니다.
이번 글에서는 게시판 기능 중 하나인 게시글 작성(등록) 을 처리하기 위해서 필요한
insert 쿼리 매핑 구조를 정리해보겠습니다.
게시글 등록은 Controller → DAO → Mapper → DB 로 이어지는 백엔드 흐름에서 중요한 역할을 하며,
MyBatis에서는 <insert> 태그를 통해 이를 구현합니다.
2. 코드 살펴보기
❗ 해당 코드들은 board-mapper.xml 에서 작성되었습니다.
2-1. <insert> 태그 구조
<insert> 태그는 MyBatis에서 데이터를 등록하는 SQL 문을 정의할 때 사용합니다.
<insert id="insert">
✔ id="insert"는 DAO에서 호출하는 메소드 이름과 연결됩니다.
✔ 이 id를 통해 MyBatis가 어떤 SQL을 실행할지 구분합니다.
2-2. parameterType
게시글 작성 시 전달되는 데이터는 BoardVo 객체에 담겨 mapper로 전달됩니다.
MyBatis는 이 객체를 기준으로 SQL 안의 #{} 파라미터를 자동으로 매핑합니다.
parameterType="com.visit.board.vo.BoardVo"
❗ parameterType 을 작성할 때에는 파일의 경로가 틀리지 않도록 주의해야 합니다.
2-3. #{ } 파라미터 매핑
#{ } 문법은 VO 객체의 필드와 SQL 값을 연결하는 역할을 합니다.
VALUES (#{userNm}, #{userPw}, #{title}, #{content}, NOW())
✔ #{userNm} → BoardVo.userNm
✔ #{title} → BoardVo.title
👉 이렇게 객체의 값이 SQL에 안전하게 바인딩됩니다.
2-4. useGeneratedKeys와 keyProperty
이 설정은 DB에서 자동 생성된 기본 키(PK)를 insert 이후 BoardVo 객체에 다시 담기 위한 옵션입니다.
게시글 번호(postId)는 DB에서 자동으로 생성되기 때문에 insert 이후에 서버에서는 그 값을 알 수 없습니다.
useGeneratedKeys와 keyProperty 설정을 사용하면 DB가 생성한 게시글 번호를
다시 BoardVo 객체에 담아 이후 처리에 사용할 수 있게 됩니다.
useGeneratedKeys="true"
keyProperty="postId"
✔ useGeneratedKeys="true" 설정을 통해 DB가 방금 생성한 postId 값을 가져옵니다.
👉 가장 최신의 postId 값을 가져올 수 있게 됩니다.
👉 "DB가 생성한 키를 사용할게"
✔ keyProperty="postId" 설정을 통해 해당 컬럼의 값은 DB가 자동으로 만들어 주는 것이 됩니다.
👉 글 번호를 1씩 늘려가는 작업을 할 필요가 없어집니다.
👉 "그 키를 BoardVo의 postId에 넣어줘"
2-5. 게시글 등록 SQL
<!-- 게시글 삽입 -->
<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>
✔ USER_NM(사용자 이름), USER_PW(비밀번호), TITLE(제목), CONTENT(내용) 은 화면에서 입력받은 값을 저장합니다.
✔ REG_DT(등록시간) 은 DB의 현재 시간(now()) 을 사용하여 저장합니다.
3. 실습
이제는 실제 화면에서 어떻게 작동하는지 확인해보겠습니다.
서버를 올려서 게시판 메인 화면(게시판 목록)으로 이동합니다.
우측 상단의 "글쓰기" 버튼을 클릭해서 만들어놨던 글쓰기 화면으로 이동합니다.

글쓰기 화면에서 원하는 값을 입력해준 후에 "등록" 버튼을 클릭하여 글을 등록합니다.

그러면 이렇게 게시판 목록 화면으로 넘어가면서 새로 입력한 글이 등록된 것을 확인할 수 있습니다.

4. 마무리하며
이번 글에서는 게시글 작성을 위한 board-mapper.xml의 insert 쿼리 구조를 살펴보았습니다.
조회(select)와 달리 insert는 실제 데이터 변경이 발생하기 때문에 파라미터 매핑과 키 처리 방식이 중요합니다.
다음 글에서는 이미 등록된 게시글을 수정하기 위한 update 쿼리와 조건 처리 흐름을 정리해보겠습니다.
수고하셨습니다.
📌 참고
[개발 실습/CRUD 게시판 만들기] - 18. 게시판 백엔드 기초 : board-mapper.xml로 매핑 구조 이해하기
18. 게시판 백엔드 기초 : board-mapper.xml로 매핑 구조 이해하기
목차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에서는
silverji.tistory.com
'개발 실습 > CRUD 게시판 만들기' 카테고리의 다른 글
| 20. 게시판 목록 백단 구현 : BoardListServlet 동작 원리 분석 (1) | 2025.12.14 |
|---|---|
| 19. 게시판 백엔드 기초 : BoardDao로 게시글 목록 조회 기능 구현하기 (7) | 2025.11.22 |
| 18. 게시판 백엔드 기초 : board-mapper.xml로 매핑 구조 이해하기 (7) | 2025.11.01 |
| 17. 게시판 백엔드 기초 : BoardVo.java로 데이터 객체 이해하기 (12) | 2025.10.25 |
| 16. 게시판 상세보기 화면 구현 : 버튼, 삭제, 필수입력(required), 강조(strong) 활용 (8) | 2025.10.18 |