Mapper Interface
- Mapping 파일에 기재된 SQL을 호출하기 위한 인터페이스
- Mapping 파일에 있는 SQL을 자바 인터페이스를 통해 호출할 수 있도록 하는 것
- Mybatis 매핑 XML에 기재된 SQL을 호출하기 위한 인터페이스
작성법
- Mapper interface를 작성함(상단 사진에서의 MemberMapper.java)
package kr.co.project.member;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MemberMapper {
// 가입
int regist(MemberVO vo);
// 이메일 중복체크
int emailCheck(String email);
// 로그인
MemberVO login(MemberVO vo);
}
- Mapping 파일의 namespace 수정(상단 사진에서의 MemberMapper.xml)
<mapper namespace="kr.co.project.member.MemberMapper">
- xml파일에 SQL 구문 작성
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.co.project.member.MemberMapper">
<insert id="regist"
parameterType="kr.co.project.member.MemberVO">
INSERT INTO member(
no, email, pwd,
name, gender, birthday,
hp, zipcode,
addr1,
addr2, regdate, state
) values (
#{no}, #{email}, MD5(#{pwd}),
#{name},
#{gender}, #{birthday},
#{hp}, #{zipcode}, #{addr1},
#{addr2},
#{regdate}, #{state}
)
<selectKey order="AFTER" keyProperty="no" resultType="int">
select
last_insert_id()
</selectKey>
</insert>
<select id="emailCheck" parameterType="String" resultType="int">
select
count(*) from member where email=#{email}
</select>
<select id="login" parameterType="kr.co.project.member.MemberVO"
resultType="kr.co.project.member.MemberVO">
select * from member where email=#{email} and pwd= MD5(#{pwd})
</select>
</mapper>
DAO와 Mapper의 차이점
DAO(Data Access Object)
- 실질적으로 DB에 접근하여 데이터를 조회하거나 조작하는 기능을 수행하는 객체
| DAO | Mapper |
---|
구현 방식 | 자바 클래스에서 SQL 쿼리를 포함한 메소드 구현 | mybatis에서 인터페이스와 XML |
SQL 관리 | 쿼리를 자바 코드 내에서 직접 작성 | 쿼리를 XML 파일이나 어노테이션으로 외부에 정의하여 관리 |
매핑 | 수덩으로 ResultSet을 처리하여 자바 객체로 매핑 | mybatis가 자동으로 매핑 |