[SpringBoot] Mybatis Mapper.xml 작성 해보기

half·2023년 9월 25일
0
post-thumbnail
  • Mybatis를 사용하기 위해서는 Mapper Interface 혹은 Class와 Mapper XML이 필요하다.
  • 별도의 MybatisConfig 파일을 생성하지 않고 yaml, properties 혹은 DataSourceConfiguration.class 파일을 통해 설정할 것이다.
  • Spring Tool Suite 4.11.0.RELEASE / SpringFramework Boot 2.4.6 로 테스트 진행

1) Mybatis Library 받기

나는 Gradle로 사용했기 때문에 Maven 방식일 경우에는 pom 방식으로 받아오면 된다.

dependencies {
	...
	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3'
    ## 버전을 적지 않을 경우 제일 최신 버전을 가져온다.
}

위 implemenatation을 추가 해준 뒤 gradle.refresh를 진행한다.

정상적으로 다운받게 되면 Project and External Dependencies 에 관련 파일들이 보인다.

  • 안보일 경우 build.gradle 설정 혹은 가져오지 못한 라이브러리 확인

2) Mapper.xml 생성 - Mapper Namespace 입력 방법

순서는 중요하지 않지만 DAO를 생성하기 전 Mapper.xml 을 먼저 생성했다.
프로젝트 하단의 src/main/resources 에 mappers 디렉토리를 생성한 뒤 해당 폴더 안에 **-mapper.xml을 생성한다.
** DAO 타겟 테이블 혹은 DTO로 이름을 작성

<?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="com.spring.web.dao.BoardDAO">
	<!-- 
		namespace :: SqlSession을 통해 Mapper 클래스에서 직접 호출하는 방법 으로
				여러개의 SQL문을 묶어서 사용할 수 있다.
	-->
  	<typeAliases>
    	<typeAliase type="com.spring.web.dto.BoardDTO" alias="boardDTO"/>
  	</typeAliases>
  	<!--
		resultType에 지정된 클래스의 인스턴스를 생성할 수 있다.
		긴 패키지 명 대신 alias로 지정한 이름으로 사용 가능
	-->
    
    <resultMap type="boardDTO" id="boardResultMap">
    	<id column="BID" property="bid"/>
        <result column="TITLE" property="title"/>
      	<result column="CREATEDATE" property="createDate" javaType="java.sql.Date"/>
    </resultMap>
    <!--
     * resultMap	:: DB TABLE의 Column 이름과 DTO의 변수명이 다를 경우에 사용
     * id			:: DB TABLE의 PK Column을 하나 지정해 작성
     * result		:: PK Column이 아닌 일반 컬럼
     * column		:: DB TABLE의 컬럼 명
     * property		:: DTO의 변수 명
    -->
     
    <select id="boardCount" resultType="int">
    	/* query */
    </select>
  	<!--
		id			:: Mapper에서 namespace*.id* 를 통해 호출하기 때문에 필요하다
		resultType	:: 반환해야 할 자료형
	-->
  
  	<insert id="boardInsert" parameterType="boardDTO">
    	/* query */
  	</insert>
  	<!--
		parameterType :: insert 하기 위한 자료형을 입력해야 하는데 DTO 혹은 Map을 주로 사용
	-->
    
  	<update id="boardUpdate" parameterType="boardDTO">
    	/* query */
    </update>
  
	<delete id="boardDelete" parameterType="boardDTO">
		/* query */      
    </delete>
</mapper>

Mapper 작성 방식은 위 방식대로 작성할 수 있다.

profile
아메리카노 수혈 받는 중

0개의 댓글