mybatis를 사용하기 위해선 의존성을 먼저 추가해줘야 한다
build.gradle 파일에 추가해준다
implementation group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '3.0.0'
implementation 'org.mariadb.jdbc:mariadb-java-client' // mariadb로 데이터 연동을 할 것
다음에 application.prorerties 파일에 데이터 정보와 mybatis를 연결해준다
spring.datasource.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/
spring.datasource.username= user 명
spring.datasource.password= 패스워드
mybatis.type-aliases-package= mapper 파일이 들어가있는 패키지 경로
mybatis.mapper-locations= mapper.xml파일이 들어가있는 경로
후에 main -> resources -> 이 위치에 경로를 추가해준다
mybatis -> mapper -> 파일명.xml
xml 파일에 sql문을 작성해준다
<?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.example.Pets.mapper.NowTest">
//namespace 는 인터페이스 경로로 잡아준다
<select id="NowTest" resultType="String">
select now()
</select>
</mapper>
// 만약 resultType 을 DTO객체로 할 경우 DTO의 클래스이름 포함 경로까지 다 작성해줘야 함
예전 프로젝트에는 config파일을 별도로 작성하여 mappig작업을 하였지만 config파일 없이 인터페이스로만 연결해보려고 한다
@Repository
@Mapper // 어노테이션 추가
public interface NowTest {
String NowTest(); // 메소드명과 xml파일에 작성한 sql문의 id와 일치해야한다
}
인터페이스까지 만들어졌으면 controller service를 생성하여 테스트하면 정상적으로 데이터연동까지 되는 모습을 확인할 수 있다
인터페이스 테스트 코드 작성
package com.example.Pets.Test;
import com.example.Pets.mapper.NowTest;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.boot.test.autoconfigure.MybatisTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.test.context.junit4.SpringRunner;
@MybatisTest
@RunWith(SpringRunner.class)
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class batisTest {
@Autowired
NowTest test;
@Test
void test(){
System.out.println("NowTest 메소드 테스트 = " + test.NowTest());
}
}
++ 참고: 테스트 코드에서 데이터 삽입시에는 자동 롤백이 설정되어 있다
커밋하기 위해서는 @Commit 어노테이션을 추가해줘야 함