반응형
기존에 Mybatis를 사용하기 위해서는 SqlSessionTemplete를 사용해서 코드를 짰어야했다.
하지만 Mybatis 3.0 이후로는 @Mapper annotation을 활용하여 더 간편하고 쉽게 가능해졌다.
기존 mybatis의 설정에 관해서는 아래 참고포스팅을 활용하는것을 추천한다.
(물론 참고 포스팅에서 기존 Mybatis spring 을 따라하는것이고 해당 포스팅에 작성된게 mybatis가 3.0 이하라는 뜻은 아니다.)
이제 해당 포스팅에서는 xml방식이 아닌 Mapper annotation을 소개하려고 한다.
결국은 repository의 차이 인데 그리하여 기존 코드를 동일하게 작성해줘야하는 부분이 몇군데 있다.
일단 먼저 pom.xml 에는 다음을 추가해주었다.
<!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.7</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-core</artifactId> <version>3.0</version> </dependency> |
다음은 properties 파일은 기존과 동일 하게 작성을 해준다.
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db명?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Seoul&useLegacyDatetimeCode=false spring.datasource.username=root spring.datasource.password=passwd |
다음 컨트롤러 역시 동일하게 작성 해준다.
@RestController @RequiredArgsConstructor public class Controller { private final ServiceClass serviceClass; @GetMapping("/a") public String getId() { String id = serviceClass.getBookId(); return id; } } |
다음은 이제 서비스에서 호출을 해준다.
@Service @RequiredArgsConstructor public class ServiceClass { private final MapperDao dao; public String getBookId() { String id = dao.getBookId("1"); return id; } } |
다음은 마지막으로 repository 부분이다.
여기서는 DAO라고 할수도 있고 이 글에서는 MapperDao 라는 이름으로 했다.
@Mapper public interface MapperDao { @Select("select price from book where book_id=#{id}") String getBookId(String id); } |
이렇게 repository 부분에서 Mapper 를 설정해주면 된다.
참고 포스팅
https://thenicesj.tistory.com/41
반응형
'IT > Java' 카테고리의 다른 글
Spring Bean 등록(@Bean은 @Configuration 내에) (75) | 2022.09.05 |
---|---|
javadoc 관련 (33) | 2022.09.03 |
Spring Batch (part 1. 소개) (40) | 2022.08.25 |
스프링 웹플럭스(webflux) (43) | 2022.08.24 |
Optional 이란? (51) | 2022.08.23 |
댓글