'resources'폴더 안에 'mappers'폴더 생성 후 그 안에 식별하기 쉬운 이름으로 파일을 등록한다.
xml 최상단에 아래와 같이 xml형식을 지정하여 이하의 설정 내용이 MyBatis mapper 설정임을 선언
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
mapper 태그를 작성하고 외부에서 접근할 수 있는 이름인 namespace속성을 기입하고,
이후에 작성될 태그들은 mapper 안에 기록한다.
<mapper namespace="memberMapper">
<!-- mapper 내부에 작성될 내용 -->
</mapper>
조회한 결과를 객체와 Row간 1:1 매칭이 아닌, 원하는 객체의 필드에 담아 반환할 때 사용한다.
<resultMap type="member" id="memberResult">
<result column="USER_NO" property="userNo"/>
<result column="USER_ID" property="userId"/>
<result column="USER_PWD" property="userPwd"/>
<result column="USER_NAME" property="userName"/>
<result column="EMAIL" property="email"/>
<result column="BIRTHDAY" property="birthday"/>
<result column="GENDER" property="gender"/>
<result column="PHONE" property="phone"/>
<result column="ADDRESS" property="address"/>
<result column="ENROLL_DATE" property="enrollDate"/>
<result column="MODIFY_DATE" property="modifyDate"/>
<result column="STATUS" property="status"/>
</resultMap>
resultMap 태그의 type속성은 실제로 구현해 놓은 자바 POJO 객체를 사용해야 하며, mybatis-config.xml에서 typeAlias를 지정하지 않은 경우 패키지 명부터 클래스명까지 모두 기술해야 한다.
sql의 조회구문을 작성할 때 사용되는 태그, 해당 쿼리를 외부에서 접근하고자 할 때 namespace.id명을 적어 접근 가능하다.
<select id="selectMember" resultMap="memberResult" parameterType="member">
SELECT *
FROM MEMBER
WHERE USER_ID=#{userId}
AND USER_PWD=#{userPwd}
AND STATUS = 'Y'
</select>
-resultMap과 resultType은 둘 모두를 사용할 수 없으면 둘 중 하나만 선언해야 한다.
해당 태그들은 설정이 동일하다.
파라미터로 객체를 받는 경우 해당 객체의 필드값을 '변수명 = 값'의 Map 방식으로 조회하여 가져올 수 있다.
<insert id="insertMember" parameterType="member">
INSERT INTO MEMBER (USER_NO, USER_ID, USER_PWD, USER_NAME, EMAIL, BIRTHDAY, GENDER, PHONE, ADDRESS)
VALUES (SEQ_UNO.NEXTVAL, #{userId}, #{userPwd}, #{userName}, #{email}, #{birthday}, #{gender}, #{phone}, #{address})
</insert>