박서희연구소

[Spring] Spring Boot 에 MyBatis 연동 본문

○ Programming [Web]/Spring

[Spring] Spring Boot 에 MyBatis 연동

SEOHUI PARK 2021. 5. 17. 15:15
반응형

[문제]

Spring Boot 를 사용하던 중, MyBatis 가 필요한 상황이 생겼다.

[목표]

Spring Boot 에 MyBatis 를 연동하는 방법을 알아본다.

[해결]

환경 : Spring Boot 2.4.5, Maven, Kotlin 1.5.0, MariaDB 2.7.1, MyBatis 2.1.4

DB 는 연동되어 있다고 가정하며, 사용할 테이블도 생성되어 있어야 한다.

1. Dependency 추가

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>

2. Mapper 추가

경로 : src/main/resources/mybatis/mapper/sample(resources 이하 부터는 재량대로 설정)

생성할 mapper interface 에 대한 패키지 경로가 필요하고, 각 쿼리의 id 값과 mapper interface 의 메서드 명과 일치해야 함

<?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="kr.me.seohuipark.noblewayback.sample.repository.BoardSqlMapper">
    <select id = "getAllBoardsMybatis" resultType = "kr.me.seohuipark.noblewayback.sample.model.rdbms.BoardDto">
        SELECT
            bd.*
        FROM
            board bd
    </select>
</mapper>

3. application.yaml 설정 파일에 추가

# mapper.xml 위치설정
mybatis:
  mapper-locations: mybatis/**/*.xml
  # 필요 시 MyBatis 매핑 Alias 설정 가능
  type-aliases-package: kr.me.seohuipark.noblewayback.sample.model.rdbms

4. DTO Class 생성

data class BoardDto(
    var id: Long,
    var title: String,
    var contents: String
)

5. Mapper Interface 생성

mapper.xml 에서 선언한 namespace 와 위치, select id 와 각 메서드의 이름도 일치해야 한다.

@Mapper
interface BoardSqlMapper {

    fun getAllBoardsMybatis(): List<BoardDto>
}

위 작업들을 모두 마무리 한 후 Controller 및 Service 를 생성하여 만든 Mapper 에서 생성한 메서드를 호출한다.

 

- 끝 -

반응형

'○ Programming [Web] > Spring' 카테고리의 다른 글

[Spring] 스프링 IoC 컨테이너  (0) 2022.05.19
[Spring] Spring Boot 에 Log4j2 적용하기  (0) 2021.05.17
Comments