반응형
springboot 에서 mybatis 를 사용할 때 xml 을 사용하지 않는 방법에 대한 정보가 많이 없어서 정리해보았다.
xml 파일을 사용하지 않고 어노테이션으로도 간단한 사용이 가능하다.
1. 설정 추가
1) build.gradle - dependencies 에 mybatis 추가한다.
- implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3'
2) application.properties 에 DB 정보를 추가한다. (아래 예시는 mysql)
# database
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:[port]/[database]?
&serverTimezone=UTC&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8
spring.datasource.username=[ID]
spring.datasource.password=[password]
# DB 컬럼명 snake case -> camel case 변환해주는 옵션
mybatis.configuration.map-underscore-to-camel-case=true
2. 테이블과 매핑되는 객체 생성
@Getter
@Setter
public class Member {
private Long id;
private String email;
private String number;
private String name;
private String password;
private String picture;
}
3. Mapper 생성
SQL를 매핑해줄 mybatis mapper 인터페이스를 만든다.
- 인터페이스 선언 위에 @Mapper 추가한다.
- 메소드 위에 @Select, @Update, @Delete 등 어노테이션 사용해서 SQL 작성한다.
@Mapper
public interface MemberMapper {
@Select("select * from member where id = #{id}")
Member findById(Long id);
}
4.컨트롤러 생성
(여기에서는 sevice 클래스는 생성하지 않고 진행)
@RequiredArgsConstructor 로 mapper 클래스를 의존성 주입한다.
@RestController
@RequestMapping("/api/members")
@RequiredArgsConstructor
public class MemberController {
private final MemberMapper memberMapper;
@GetMapping("/{id}")
public ResponseEntity<Member> findById(@PathVariable Long id) {
return memberMapper.findById(id);
}
}
5. api 테스트
어플리케이션을 실행시키고 localhost:8080/api/members/{id} 로 테스트한다.
참고
반응형
'Study > Spring' 카테고리의 다른 글
[Spring]Builder (0) | 2023.10.06 |
---|---|
[Spring] AOP 예제 (0) | 2023.09.25 |
[Spring] 3. AOP (0) | 2023.09.24 |
[Spring] Spring 시작하기 (0) | 2023.09.24 |
[Spring] 2. DI(Dependancy Injection)란? (1) | 2023.09.24 |