spring Gradle myBatis 연동 방법

김예지·2023년 3월 21일
0

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 어노테이션을 추가해줘야 함

profile
나만의 방식을 찾아가는 신입신입 개발자

0개의 댓글