스프링부트를 사용할 때 거의 JPA만 사용했었는데, 때에 따라 MyBatis도 사용하면 괜찮을 것 같았다.
실제로 여러 개발 블로그를 보니 혼용으로 사용하는 분들이 꽤나 많았기에 나도 한 번 그렇게 해봐야겠다라는 생각이 들었고..
시작이 반이다라는 느낌으로 Spring Boot + MyBatis를 어떻게 사용하는지 간략하게 기록해본다.
1) build.gradle
참고로 현재 Spring Boot와 jsp, Mybatis를 혼용해서 공부를 하고 있다. 그래서 스프링에서 jsp 사용을 위한 tomcat-jasper가 디페던시 되어있고 나머지 mysql과 mybatis를 설정해주도록 하자.
참고로 순서는 뭐가 먼저고 그런건 없으니 그냥 참고..
2) application.properties
spring에게 db에 대한 정보와 mybatis mapper xml의 경로를 알려주도록 하자. 위의 spring.mvc~~~.prefix 및 suffix는 쉽게 말해 경로의 앞, 뒤를 생략할 수 있게 도와주는 설정이다. 위 경로에 대해 아래 캡처 이미지를 확인해보자.
mapper xml은 resources 아래 sqlmapper라는 폴더를 따로 만들어 생성해두었으며, prefix 및 suffix는 jsp를 사용하기 위한 디렉터리인 webapp/WEB-INF/views에 위치하고 있다.
3) DAO와 DTO 생성 및 mapper 설정
DAO 인터페이스와 DTO 클래스를 간단히 만들었다. 롬복을 사용했기에 @Data로 빠르게 DTO를 설정해줬다. 그리고
간단히 조회만 할 수 있도록 위와 같이 설정한다. 사용할 mapper가 하나이기에 매우 저렴하게 작성되었다.
namespace에 mapper로 쓰여질 인터페이스인 studyDao의 패키지 경로를 작성한다. 그리고 id에는 사용되어질 메소드 명과 반환될 타입을 명시해주는 resultType을 작성한다. resultType으로는 여러가지의 타입을 적어줄 수 있다. 예를 들면 map과 같은 키,쌍 값 등등.. 나는 DTO를 하나 만들어서 사용하려고 한다. 만든 DTO의 패키지 경로를 resultType에 작성해준다.
4) Service 및 Controller 작성
이후 Dao를 주입받은 Service를 하나 만들어준다. DB에 등록된 학생들 모두를 조회할 수 있도록 위 mapper xml에서 설정을 해두었기 때문에 해당 Service의 getAllStudy 메소드는 UserDto 타입으로 객체들을 반환할 것이다.
그 이후 여태까지 진행했던 모든 과정들의 보답으로 결과 값이 제대로 나오는지 Controller를 통해 테스트해본다. return은 일단 무시하도록 하자. 난 콘솔창에서 결과를 보길 바랬으니 for each로 빠르게 데이터를 받아보자. 먼저 DB에 등록해두었던 데이터들은 다음과 같다.
@Getmapping으로 설정된 경로인 localhost:포트번호/test 에 접근하면 콘솔창에 세 개의 데이터가 정상적으로 출력됨을 알 수 있다.
'Java > Spring' 카테고리의 다른 글
SpringBoot Bean 중복 처리(필드명 수정을 통한 방법) (0) | 2023.05.05 |
---|---|
@JsonManagedReference와 @JsonBackReference (0) | 2022.12.22 |
@JoinColumn(mappedBy)과 연관 관계의 주인 (0) | 2022.12.09 |
Spring + MySQL 연동 (0) | 2022.11.24 |
@RequestParam과 @PathVariable (0) | 2022.11.22 |