MyBatis

웃음인·2025년 5월 22일

Framework

목록 보기
7/7
post-thumbnail

MyBatis란?

  • 데이터의 입력, 조회, 수정, 삭제(CRUD)를 보다 편하게 하기 위해
    xml로 구조화한 Mapper 설정 파일을 통해서 JDBC를 구현한 영속성 프레임워크

  • 기존에 JDBC를 통해 구현했던 상당 부분의 코드와
    파라미터 설정 및 결과 매핑을 xml 설정을 통해 쉽게 구현할 수 있음

  • MyBatis 공식 홈페이지 (http://www.mybatis.org/mybatis-3/ko)

MyBatis 동작 흐름

  • 기존에 JDBCTemplate을 통해 SQL을 실행하였다면
    MyBatis는 해당 과정 전용 라이브러리를 통해 대체하여 동작한다고 생각하면 됨!


MyBatis 내부 동작 구조


Mybatis를 이용하기 위한 XML 파일
DTD(Document Type Definition) 추가

  • Window - Preferences - XML - XML Catalog - User Specified Entries 클릭 – Add... 클릭

(아래 내용을 차례대로 추가)


mybatis-config.xml 생성

  • src/main/resources 폴더에 mybatis-config.xml 파일 생성

mybatis-config.xml 파일 내용 작성

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0/EN" "http://mybatis.org/dtd/mybat
<configuration>

    <settings>
      <!-- Java -> DB로 INSERT,UPDATE 시 Java의 null 값을 DB의 NULL로 인식하도록 설정-->
      <setting name="jdbcTypeForNull" value="NULL" />
      
      <!-- DB의 UnderScore (_) 표기법 <-> Java의 Camel 표기법
      두 표기법이 서로 변환 될 수 있도록 매핑하여
      Java 필드명(memberId)과 DB 컬럼명(MEMBER_ID)가 서로 연결되게 함
      -->
    	<setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>

</configuration>

*-mapper.xml 생성

  • src/main/resources 폴더에 ‘mappers’ 폴더 생성 후 mapper.xml 파일 생성


*-mapper.xml 파일 기본 작성 방법

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-m
<mapper namespace="연결할 Mapper 인터페이스 파일 경로 작성 (필수)">

  <!-- 해당 태그는 무조건 삭제!! -->
  <!--<cache-ref namespace=""/>-->
  <!-- 수행 하려는 SQL 구문 태그 작성-->
  <select id="" parameterType="" resultType="">SQL 작성</select>
  <insert id="" parameterType="">SQL 작성</insert>
  <update id="" parameterType="">SQL 작성</update>
  <delete id="" parameterType="">SQL 작성</update>
</mapper>
id구문을 찾기 위해 사용될 수 있는 네임스페이스 내 유일한 구분자
Mapper 인터페이스의 메서드명 동일하게 작성!
parameterType구문에 전달될 파라미터의 클래스 명(패키지 경로 포함)이나 별칭
resultType리턴되는 타입의 패키지 경로를 포함한 전체 클래스 명이나 별칭,
collection인 경우 list, arraylist로 설정할 수 있다.

0개의 댓글