본문 바로가기
Study/Spring

springboot 에서 어노테이션기반 MyBatis 적용하기 (xml 사용하지 않고)

by 나아가는 2023. 12. 16.
반응형

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} 로 테스트한다.

 

참고

[Spring] Connect Spring Boot to DB with MyBatis

반응형

'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