<mapper namespace="지정할 이름"></mapper>
<select></select>
<insert></insert>
<update></update>
<delete></delete>
반환값이 있는 쿼리 | 반환값이 없는 쿼리 | |
---|---|---|
JDBC 방식 | stmt | pstmt.executeUpdate(); | stmt | pstmt.executeQuery(); |
Mybatis 방식 | sqlSession.insert(), sqlSession.update(), sqlSession.delete() | sqlSession.selectOne(), sqlSession.selectList() |
DAO
// 1행 조회(파라미터 O) 방법
String memberNickname = sqlSession.selectOne("memberMapper.test2", inputMember.getMemberEmail());
logger.debug(memberNickname + "");
member-mapper.xml
<!-- 조회되는 행의 개수 : 1행 / 파라미터 타입 : String / 조회되는 데이터 타입 : String -->
<select id="test2" parameterType="string" resultType="string">
SELECT MEMBER_NICK FROM MEMBER
WHERE MEMBER_EMAIL = #{memberEmail}
AND SECESSION_FL = 'N'
</select>
1) 패키지명 + 클래스명을 모두 작성해야 한다.
2) mapper에서 VO에 저장된 값을 얻어와 사용할 경우 #{필드명}을 사용한다.
단, VO에 반드시 Getter가 작성되어 있어야 한다.
<select id="test3" parameterType="edu.kh.comm.member.model.vo.Member" resultType="string">
</select>
하지만, mybatis-config.xml -> typeAlias 지정하면
<!-- 별칭 작성 부분 -->
<!-- VO클래스의 패키지명 + 클래스명 모두 작성하는 것이 불편하기 때문에 짧은 별칭 부여 -->
<typeAliases>
<typeAlias type="edu.kh.comm.member.model.vo.Member" alias="member"/>
</typeAliases>
<select id="test3" parameterType="member" resultType="string">
</select>
이렇게 짧게 작성할 수 있다!
[resultMap 속성]
1) type : 조회 결과를 담을 vo의 타입 또는 별칭
2) id : 만들어진 resultMap 태그를 지칭할 이름(식별명)
[resultMap 내부 작성 태그]
<id> : PK 역할의 컬럼 - 필드 연결
<result> : PK를 제외한 나머지 컬럼 - 필드 연결
<resultMap type="member" id="member_rm">
<id property="memberNo" column="MEMBER_NO"/>
<result property="memberEmail" column="MEMBER_EMAIL"/>
<result property="memberPw" column="MEMBER_PW"/>
<result property="memberNickname" column="MEMBER_NICK"/>
<result property="memberTel" column="MEMBER_TEL"/>
<result property="memberAddress" column="MEMBER_ADDR"/>
<result property="profileImage" column="PROFILE_IMG"/>
<result property="enrollDate" column="ENROLL_DT"/>
<result property="secessionFlag" column="SECESSION_FL"/>
</resultMap>
<select id="login" parameterType="member" resultMap="member_rm">
SELECT MEMBER_NO,MEMBER_EMAIL,MEMBER_NICK ,MEMBER_TEL,
MEMBER_ADDR, PROFILE_IMG,
TO_CHAR( ENROLL_DT, 'YYYY-MM-DD HH24:MI:SS') AS ENROLL_DT, MEMBER_PW
FROM MEMBER_S
WHERE SECESSION_FL = 'N'
AND MEMBER_EMAIL = #{memberEmail}
</select>