[MyBatis] 세팅(maven) 및 사용법(annotation 방식)

minjjai·2023년 1월 7일
0

회사에서 학습차원으로 진행하는 게시판 토이 프로젝트를 진행 중이다.
기존에는 jpa로 모든 repository를 구현했다.
회사의 신입사원 온보딩 가이드나 회사의 코드를 보니 MyBatis를 사용하는 것을 볼 수 있었다.
지난 부트캠프에서의 자료들과 기억들을 되살려 MyBatis세팅과 간단한 사용법을 기록하려 한다.
MyBatis는 메서드의 쿼리 정보를 구별된 xml파일로 관리할 수 도 있고, Mapper 혹은 Repository에서 어노테이션으로 바로 관리할 수 도 있다.

이 글에서는 어노테이션을 이용한 구현에 대해서 기록하고자 한다.

세팅

maven

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>3.0.0</version>
</dependency>

gradle

implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.0'

mapper or repository

@Mapper
public interface MybatisMemberRepository {

    @Insert("""
            <script>
            insert into member
            set username = #{username},
            password = #{password},
            email = #{email},
            nickname = #{nickname}
            </script>
            """)
    void save(@Param("username") String username, @Param("password") String password, @Param("email") String email, @Param("nickname") String nickname);


    @Select("""
            <script>
            select member_idx, username, password, email, nickname 
            from member
            where member_idx = #{memberIdx}
            </script>
            """)
    MemberDto findById(@Param("memberIdx") long memberIdx);

    @Select("""
            select *
            from member
            """)
    List<MemberDto> findAll();

    @Select("""
            select *
            from member
            where username = #{username}
            """)
    MemberDto findByUsernmae(@Param("username") String username);

    @Select("""
            select *
            from member
            where nickname = #{nickname}
            """)
    MemberDto findByNickname(@Param("nickname") String nickname);
}

이름은 도메인Mapper 혹은 도메인Repository의 형태로 많이 하는 것 같다.

@Mapper

interface를 생성하고, @Mapper어노테이션을 붙이면 끝이다.
메서드를 선언하고, 메서드의 기능에 맞게 어노테이션을 붙이고, 그 안에 쿼리문을 작성해주면 된다.

  • @Select(...)
  • @Insert(...)
  • @Delete(...)
  • @Update(...)

@Param(...)

메서드의 파라미터로 받아온 데이터들을 쿼리문에 넣으려면 파라미터의 앞에 @Param("쿼리문 안에서 쓸 이름")의 형태로 어노테이션을 붙여주면 된다.
쿼리문 안에서 #{@Param어노테이션에서 지정해준 이름}의 형태로 사용할 수 있다.

위의 코드를 보면 <script></script>가 추가되어 있는 쿼리문도 볼 수 있는데, 이것을 추가해주면 안에서 if문을 사용할 수 있다고 한다.
(아직 사용 안 해봄..)

참고 : tistory:망나니개발자

profile
BackEnd Developer

0개의 댓글