프론트와 백 이해하기 3 (Mybatis)

심영민·2025년 3월 10일
0

유레카

목록 보기
21/33

MyBatis란?

MyBatis는 자바 객체와 SQL 사이의 간극을 메워주는 SQL 매퍼로 즉, 데이터베이스 작업을 효율적으로 처리하도록 도와주는 도구임.

직접 파일에서 SQL 명령어로 접근이 쉬워진다.

주요 파일 및 개념


위 구조를 따르는 프로젝트에서 주요 파일과 개념을 정리해보겠다.

파일

  • mapper/member.xml: SQL 쿼리 정의 (매퍼 파일)
  • application.properties: 데이터베이스 설정 및 MyBatis 설정
  • com.shop.cafe.dao.MemberDao: 데이터베이스 접근 인터페이스 (DAO)
  • com.shop.cafe.dto.Member: 회원 정보 객체 (DTO)

개념

  • 매퍼: SQL 쿼리를 정의하고 자바 인터페이스와 연결.
  • DTO: 데이터 전송 객체 (Data Transfer Object).
  • DAO: 데이터 접근 객체 (Data Access Object).
  • #{}: 매개변수 바인딩.

장점

  • SQL 코드 분리 및 관리 용이.
  • 자바 객체와 데이터베이스 매핑 자동화.
  • 유지보수성 향상.
  • 성능 향상 (JDBC 직접 사용 대비).

CoffeShop 프로젝트 파일 분석

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 적용하기 위해서는~

프로젝트에서 MyBatis 적용하려면 다음과 같은 순서로 파일을 작성하면 된다.

  1. DTO 생성: 데이터베이스 테이블과 매핑될 자바 객체 생성 (Member).
  2. 매퍼 파일 작성: SQL 쿼리 정의 (mapper/member.xml).
  3. DAO 인터페이스 작성: 매퍼 파일과 연결 (MemberDao).
  4. application.properties 설정: 데이터베이스 및 MyBatis 설정.
  5. 서비스/컨트롤러에서 DAO 사용: 데이터베이스 작업 수행.
profile
코딩너무어려운대 어떡할과 재학중

0개의 댓글