[Spring Boot] Mybatis association 태그를 Java Config로 바꾸기

Mybatis 클래스 내에 다른 클래스 맵핑하기

기존 xml파일에서는 조인과 같은 쿼리를 통해 여러 컬럼을 만들고 각각 한 오브젝트내에 존재하는 다른 오브젝트에도 적절히 맵핑시켜줘야 할 때 association태그를 사용하면 된다. Java Config에서는 association태그 대신 @One 어노테이션을 사용하면 된다.

1
2
3
4
5
6
7
8
9
10
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Alias("user")
public class User {
int id;
User friend;
int friendCode;
}

이런 클래스가 있고 User내에 User를 맵핑시켜야 할때

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Repository
@Mapper
public interface UserMapper {
@Results(value = {
@Result(property = "id", column = "id"),
@Result(property = "friendCode", column = "friendCode"),
@Result(property = "friend", column = "{code = friendCode, id = id}", one = @One(select = "getNotUser"))
})
@Select("Select * from User Where id = #{id}")
User getUser(@Param("id") int id);

@Select("Select * from User Where Not id = #{id} and friendCode = #{code}")
User getNotUser(@Param("id") int id, @Param("code") int code);
}

@One을 통해서 유저를 받아와서 맵핑시키면 된다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2021/02/24/Spring/mybatisAnotherClass/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.