- Mybatis를 사용하기 위해서는 Mapper Interface 혹은 Class와 Mapper XML이 필요하다.
- 별도의 MybatisConfig 파일을 생성하지 않고 yaml, properties 혹은 DataSourceConfiguration.class 파일을 통해 설정할 것이다.
- Spring Tool Suite 4.11.0.RELEASE / SpringFramework Boot 2.4.6 로 테스트 진행
나는 Gradle로 사용했기 때문에 Maven 방식일 경우에는 pom 방식으로 받아오면 된다.
dependencies {
...
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3'
## 버전을 적지 않을 경우 제일 최신 버전을 가져온다.
}
위 implemenatation을 추가 해준 뒤 gradle.refresh를 진행한다.
정상적으로 다운받게 되면 Project and External Dependencies
에 관련 파일들이 보인다.
순서는 중요하지 않지만 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 작성 방식은 위 방식대로 작성할 수 있다.