제시해 주신 MyBatis 매퍼 코드는 게시판 CRUD(Create, Read, Update, Delete) 기능을 구현한 표준적인 형태입니다.

📝 매퍼 코드 주요 기능 설명

sample 네임스페이스 매퍼 파일은 게시글(TB_BOARD)과 첨부 파일(TB_FILE)을 관리하는 데 필요한 모든 SQL 쿼리를 담고 있습니다.

1. 게시글 관련 주요 기능

ID 역할 쿼리 타입 설명
selectBoardList 게시글 목록 조회 SELECT 페이징(common.pagingPre, common.pagingPost 포함) 및 동적 검색 조건을 적용하여 게시글 목록을 조회합니다.
insertBoard 게시글 등록 INSERT SEQ_TB_BOARD_IDX.NEXTVAL 시퀀스를 사용하여 게시글을 새로 등록합니다.
updateHitCnt 조회수 증가 UPDATE 특정 게시글의 HIT_CNT를 1 증가시킵니다.
selectBoardDetail 게시글 상세 조회 SELECT 특정 게시글의 상세 내용을 조회합니다.
boardUpdate 수정 화면 조회 SELECT 수정 페이지에 기존 데이터를 채우기 위해 게시글 상세 내용을 조회합니다.
updateBoard 게시글 수정 UPDATE 제목과 내용을 실제 DB에 수정(업데이트)합니다.
deleteBoard 게시글 삭제 UPDATE 게시글을 DB에서 영구 삭제하지 않고, 상태를 변경합니다. (소프트 삭제)

2. 파일 관련 주요 기능

ID 역할 쿼리 타입 설명
insertFile 파일 정보 등록 INSERT 첨부 파일 정보를 TB_FILE 테이블에 등록합니다.
selectFileList 파일 목록 조회 SELECT 특정 게시글에 연결된 활성화된 파일 목록을 조회합니다.
deleteFileList 첨부 파일 삭제 처리 UPDATE 특정 게시글의 모든 파일의 DEL_GB를 'Y'로 변경합니다 (게시글 수정 시 사용).
updateFile 첨부 파일 활성화 UPDATE 파일의 DEL_GB를 'N'으로 변경합니다 (게시글 수정 시 기존 파일 유지).

3. deleteBoard 쿼리 분석 (소프트 삭제)

deleteBoard 쿼리는 삭제 기능이 맞습니다. 하지만 물리적 삭제가 아닌, '소프트 삭제(Soft Delete)'를 구현하고 있습니다.

🔍 소프트 삭제란?

일반적으로 DB에서 데이터를 지우는 방식은 두 가지가 있습니다.

  1. 물리적 삭제 (Hard Delete): DELETE FROM TB_BOARD WHERE IDX=#{IDX} 쿼리를 사용하여 해당 행(Row)을 데이터베이스 테이블에서 영구적으로 제거합니다.
  2. 소프트 삭제 (Soft Delete): 데이터를 제거하는 대신, 상태를 나타내는 특정 컬럼(DEL_GB = Delete Group By, 삭제 여부)의 값을 **'Y'(Yes)**로 변경합니다.

💡 쿼리의 의미

SQL

UPDATE TB_BOARD SET DEL_GB = 'Y' WHERE IDX=#{IDX}

이 쿼리는 다음과 같이 해석됩니다.