MyBatis는 자바 객체와 SQL 사이의 간극을 메워주는 SQL 매퍼로 즉, 데이터베이스 작업을 효율적으로 처리하도록 도와주는 도구임.
직접 파일에서 SQL 명령어로 접근이 쉬워진다.
위 구조를 따르는 프로젝트에서 주요 파일과 개념을 정리해보겠다.
mapper/member.xml
: SQL 쿼리 정의 (매퍼 파일)application.properties
: 데이터베이스 설정 및 MyBatis 설정com.shop.cafe.dao.MemberDao
: 데이터베이스 접근 인터페이스 (DAO)com.shop.cafe.dto.Member
: 회원 정보 객체 (DTO)#{}
: 매개변수 바인딩.mapper/member.xml
<?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="com.shop.cafe.dao.MemberDao">
<select id="login" resultType="Member" parameterType="Member">
select * from member where email=#{email} and pwd=#{pwd}
</select>
<insert id="insertMember" parameterType="Member">
insert into member(email, pwd, nickname) values (#{email},#{pwd},#{nickname})
</insert>
<update id="updateMember" parameterType="Member">
update member set nickname=#{nickname} where email=#{email} and pwd=#{pwd}
</update>
<delete id="deleteMember" parameterType="String">
delete from member where email=#{email}
</delete>
</mapper>
<mapper namespace="com.shop.cafe.dao.MemberDao">
: MemberDao
인터페이스와 연결.<select id="login" ...>
: 로그인 쿼리. Member
객체를 반환.<insert id="insertMember" ...>
: 회원 가입 쿼리.<update id="updateMember" ...>
: 회원 정보 수정 쿼리.<delete id="deleteMember" ...>
: 회원 탈퇴 쿼리.#{email}
, #{pwd}
, #{nickname}
: Member
객체의 필드 값.application.properties
spring.application.name=CoffeShop
spring.datasource.driver-class-name=${DB_DRIVER}
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PW}
logging.level.com.shop.cafe=debug
mybatis.type-aliases-package=com.shop.cafe.dto
mybatis.mapper-locations=mapper/*.xml
spring.datasource.*
: 데이터베이스 연결 설정.logging.level.com.shop.cafe=debug
: com.shop.cafe
패키지 로그 레벨 설정.mybatis.type-aliases-package=com.shop.cafe.dto
: Member
DTO 클래스 별칭 설정 (클래스 이름 대신 Member
사용 가능).mybatis.mapper-locations=mapper/*.xml
: 매퍼 파일 위치 설정.com.shop.cafe.dao.MemberDao
package com.shop.cafe.dao;
import org.apache.ibatis.annotations.Mapper;
import com.shop.cafe.dto.Member;
@Mapper
public interface MemberDao {
Member login(Member m) throws Exception;
public void insertMember(Member m) throws Exception;
public void updateMember(Member m) throws Exception;
public void deleteMember(String email) throws Exception;
}
@Mapper
: MyBatis 매퍼 인터페이스임을 선언.Member login(Member m) throws Exception;
: 매퍼 파일의 login
쿼리와 연결.public void insertMember(Member m) throws Exception;
: 매퍼 파일의 insertMember
쿼리와 연결.public void updateMember(Member m) throws Exception;
: 매퍼 파일의 updateMember
쿼리와 연결.public void deleteMember(String email) throws Exception;
: 매퍼 파일의 deleteMember
쿼리와 연결.프로젝트에서 MyBatis 적용하려면 다음과 같은 순서로 파일을 작성하면 된다.
Member
).mapper/member.xml
).MemberDao
).application.properties
설정: 데이터베이스 및 MyBatis 설정.