○ 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 에서 생성한 메서드를 호출한다.
- 끝 -
반응형