<?xml version="1.0" encoding="UTF-8" ?>
<!-- 샘플 게시판 MyBatis 매퍼 선언부이다. -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- MyBatis 매퍼 DTD 선언이다. -->

<mapper namespace="sampleBoardMapper"> <!-- 샘플 게시판 매퍼 네임스페이스이다. -->

    <resultMap id="sampleBoardResultMap" type="com.samsung.sample.board.entity.SampleBoard"> <!-- samples 테이블과 엔티티 매핑 정의이다. -->
        <id property="id" column="id"/> <!-- 기본키 컬럼을 엔티티 id 필드에 매핑한다. -->
        <result property="title" column="title"/> <!-- 제목 컬럼을 엔티티 title 필드에 매핑한다. -->
        <result property="content" column="content"/> <!-- 내용 컬럼을 엔티티 content 필드에 매핑한다. -->
        <result property="author" column="author"/> <!-- 작성자 컬럼을 엔티티 author 필드에 매핑한다. -->
        <result property="createdAt" column="created_at"/> <!-- 생성일시 컬럼을 엔티티 createdAt 필드에 매핑한다. -->
    </resultMap> <!-- 결과 매핑 정의를 종료한다. -->

    <select id="selectSampleBoardList" resultMap="sampleBoardResultMap"> <!-- 게시글 목록 조회 쿼리이다. -->
        SELECT id, title, content, author, created_at <!-- 조회할 컬럼 목록이다. -->
        FROM public.samples <!-- samples 테이블을 조회한다. -->
        ORDER BY id DESC <!-- 최신 게시글이 먼저 오도록 정렬한다. -->
    </select> <!-- 목록 조회 쿼리를 종료한다. -->

    <select id="selectSampleBoard" parameterType="int" resultMap="sampleBoardResultMap"> <!-- 게시글 상세 조회 쿼리이다. -->
        SELECT id, title, content, author, created_at <!-- 조회할 컬럼 목록이다. -->
        FROM public.samples <!-- samples 테이블을 조회한다. -->
        WHERE id = #{id} <!-- 식별자로 단건을 조회한다. -->
    </select> <!-- 상세 조회 쿼리를 종료한다. -->

    <insert id="insertSampleBoard" parameterType="com.samsung.sample.board.entity.SampleBoard" useGeneratedKeys="true" keyProperty="id"> <!-- 게시글 등록 쿼리이다. -->
        INSERT INTO public.samples (title, content, author) <!-- 등록할 컬럼 목록이다. -->
        VALUES (#{title}, #{content}, #{author}) <!-- 입력값을 바인딩해 저장한다. -->
    </insert> <!-- 등록 쿼리를 종료한다. -->

    <update id="updateSampleBoard" parameterType="com.samsung.sample.board.entity.SampleBoard"> <!-- 게시글 수정 쿼리이다. -->
        UPDATE public.samples <!-- samples 테이블을 수정한다. -->
        SET title = #{title}, <!-- 제목을 수정한다. -->
            content = #{content}, <!-- 내용을 수정한다. -->
            author = #{author} <!-- 작성자를 수정한다. -->
        WHERE id = #{id} <!-- 식별자로 대상 행을 지정한다. -->
    </update> <!-- 수정 쿼리를 종료한다. -->

    <delete id="deleteSampleBoard" parameterType="int"> <!-- 게시글 삭제 쿼리이다. -->
        DELETE FROM public.samples <!-- samples 테이블에서 삭제한다. -->
        WHERE id = #{id} <!-- 식별자로 대상 행을 지정한다. -->
    </delete> <!-- 삭제 쿼리를 종료한다. -->
</mapper> <!-- 매퍼 정의를 종료한다. -->
