기존 xml파일에서는 조인과 같은 쿼리를 통해 여러 컬럼을 만들고 각각 한 오브젝트내에 존재하는 다른 오브젝트에도 적절히 맵핑시켜줘야 할 때 association태그를 사용하면 된다. Java Config에서는 association태그 대신 @One 어노테이션을 사용하면 된다.
1 2 3 4 5 6 7 8 9 10
@Getter @ToString @AllArgsConstructor @NoArgsConstructor @Alias("user") publicclassUser { int id; User friend; int friendCode; }
이런 클래스가 있고 User내에 User를 맵핑시켜야 할때
1 2 3 4 5 6 7 8 9 10 11 12 13 14
@Repository @Mapper publicinterfaceUserMapper { @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); }