<insert>DB에 새로운 레코드를 삽입할 때 사용한다.
<insert id="insertMember" parameterType="MemberDTO">
INSERT INTO member (name, age)
VALUES (#{name}, #{age})
</insert>
<selectKey> 또는 useGeneratedKeys를 사용해야 한다.<update>기존 레코드를 수정할 때 사용한다.
<update id="updateMember" parameterType="MemberDTO">
UPDATE member
SET age = #{age}
WHERE id = #{id}
</update>
<set> 태그와 동적 SQL을 함께 사용할 수 있다.<update id="dynamicUpdate" parameterType="MemberDTO">
UPDATE member
<set>
<if test="name != null">name = #{name},</if>
<if test="age != null">age = #{age}</if>
</set>
WHERE id = #{id}
</update>
<delete>레코드를 삭제할 때 사용한다.
<delete id="deleteMember" parameterType="int">
DELETE FROM member
WHERE id = #{id}
</delete>
<select>레코드를 조회할 때 사용한다.
<select id="selectOneMember" parameterType="int" resultType="MemberDTO">
SELECT id, name, age
FROM member
WHERE id = #{id}
</select>
selectOne() 메서드로 호출하며, 결과는 1건이어야 한다.<select id="selectAllMembers" resultType="MemberDTO">
SELECT id, name, age
FROM member
</select>
selectList() 메서드로 호출하며, 결과는 N건 리스트로 반환된다.<selectKey>INSERT 수행 전에 또는 후에 PK 값을 조회할 때 사용한다.
<insert id="insertWithKey" parameterType="MemberDTO">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
SELECT member_seq.NEXTVAL FROM dual
</selectKey>
INSERT INTO member (id, name, age)
VALUES (#{id}, #{name}, #{age})
</insert>
order="BEFORE" : INSERT 하기 전에 키를 조회해서 DTO에 세팅한다.keyProperty="id" : 조회된 키를 MemberDTO의 id 필드에 매핑한다.<insert id="insertAutoIncrement" parameterType="MemberDTO" useGeneratedKeys="true" keyProperty="id">
INSERT INTO member (name, age)
VALUES (#{name}, #{age})
</insert>
useGeneratedKeys="true" : DB가 자동 생성한 키를 JDBC를 통해 가져온다.keyProperty에 생성된 키 값을 세팅한다.<resultMap>DB 조회 결과를 복잡한 형태로 객체에 매핑할 때 사용한다.
<resultMap id="memberResultMap" type="MemberDTO">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap>
<select id="selectMembers" resultMap="memberResultMap">
SELECT id, name, age
FROM member
</select>
<resultMap id="memberWithTeamMap" type="MemberDTO">
<id property="id" column="id"/>
<result property="name" column="name"/>
<association property="team" javaType="TeamDTO">
<id property="teamId" column="team_id"/>
<result property="teamName" column="team_name"/>
</association>
</resultMap>
association: 다른 객체를 1:1로 매핑할 때 사용한다.collection: 다른 객체를 1:N으로 매핑할 때 사용한다.