Spring, Spring Boot

[Spring Boot] IntelliJ Spring Boot 프로젝트 생성 후 MyBatis연동까지

Yoon 2021. 11. 27. 21:24

Spring Boot 프로젝트 생성은 비교적 쉬운 편이다.

 

아래 링크에서 Spring 프로젝트를 생성할 수도 있지만,

IntelliJ로 프로젝트 생성 할때 Spring Initializr이 있어 더욱 쉽게 생성할 수 있다.

https://start.spring.io/

 

프로젝트의 이름이나 package 이름 등을 설정하고나면 사용할 dependency를 추가할 수 있는 창이 나오는데,

 

Spring Boot 프로젝트에서 클라이언트와 데이터를 주고 받는 동적 웹 애플리케이션을 구현할 것이기 때문에

위 사진에 있는 dependency를 추가한다.

 

생성한 프로젝트의 패키지 구조이다.

MyBatisController - 사용자의 요청을 받았을 때 어떤 처리를 하여 어떤 값을 보여줄지 담당

MyBatisService - 컨트롤러가 필요한 데이터를 서비스 내부에서 로직을 처리하여 전달해주는 역할을 담당

MyBatisRepository - 사용자가 요청한 데이터를 DB에서 가져와야할 경우 CRUD를 담당

MyBatisMapper - 해당 인터페이스에 선언된 메소드를 통해 MyBatisXml에 정의되어 있는 sql문을 처리

먼저 DBConnection을 위한 설정을 해준 파일이다.

7LINE의 mybatis.mapper-locations 설정 값으로 sql문이 정의되어 있는,

또는 Mapper Interface와 매핑할 수 있는 xml은 이 디렉토리 내의 있다는 것을 정의한다.

spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/testDB
spring.datasource.username = root
spring.datasource.password = ####

mybatis.mapper-locations = xmlMapper/**/*.xml

sql문이 정의되어 있는 xml과 xml에 있는 쿼리 문과 매핑시키기 위한 Mapper Interface다.

 

myBatisXml.xml의 5LINE을 보면 namespace 속성 값으로 이 xml과 매핑 시킬 Mapper Interface의

경로가 정의되어 있다.

 

Mapper Interface도 @Mapper 어노테이션을 붙여 이 인터페이스를 매퍼로 등록해줘야한다.

 

이렇게 서로 매칭시켜 MyBatis가 Mapper Interface에 정의되어 있는 메소드 명과

xml 내의 sql ID값이 일치한 sql문을 실행할 수 있게 되는 것이다.

 

MyBatisService의 findAllData()를 호출하여 리턴 값을 콘솔에 출력한다.

DBConnection 세팅과 MyBatis를 사용하기 위한 메핑 세팅 후 테스트를 위한 테스트 코드이다.

테스트 용이기 때문에 호출만 하면된다.

로직을 처리하는 Service 단이다. MyBatis를 이용해 DB를 접근해야 하기 때문에

DB처리를 담당하는 MyBatisRepository.findAllData()를 호출한다.

DB접근을 처리하는 Repository 단이다. MyBatisXml.xml에 있는 sql 문과 매핑 되어 있는

Mapper Interface를 가져와 해당되는 메소드를 호출하여 매칭된 sql문을 호출하여 결괏값을 반환한다.

 

이렇게 각각의 역할을 분리하여 사용자의 요청을 더욱 체계적으로 처리할 수 있게 되는 것이다.

이 구조의 장점은 각각의 역할이 분리되어 있기 때문에 역할의 독립성을 높일 수 있고,

재사용성을 높여 유지보수가 용이하다는 장점이 있다.


RESULT