Skip to content

Commit

Permalink
Added a test demonstrating nested column prefix
Browse files Browse the repository at this point in the history
  • Loading branch information
harawata committed Feb 14, 2020
1 parent e26ca61 commit 494dccf
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 2 deletions.
Expand Up @@ -37,6 +37,7 @@ VALUES ('4', 'Learning-commissary');
CREATE TABLE user (
id int,
username varchar(32),
friend_id int
);

-- ----------------------------
Expand All @@ -48,8 +49,8 @@ INSERT INTO user (id,username)
VALUES ('2', 'Doug Lea');
INSERT INTO user (id,username)
VALUES ('3', 'Rod johnson');
INSERT INTO user (id,username)
VALUES ('4', 'Juergen Hoeller');
INSERT INTO user (id,username, friend_id)
VALUES ('4', 'Juergen Hoeller', 1);

-- ----------------------------
-- Table structure for `user_role`
Expand Down
Expand Up @@ -78,4 +78,20 @@ void shouldUseColumnPrefixWithOne() {
assertEquals("teacher", users.get(0).getRole().getName());
}
}

@Test
void shouldResolveNestedColumnPrefix() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserDao mapper = sqlSession.getMapper(UserDao.class);
User user = mapper.findUserWithFriend(4);
assertEquals(4, user.getId());
assertEquals(2, user.getRoles().size());
assertEquals("student", user.getRoles().get(0).getName());
assertEquals("Learning-commissary", user.getRoles().get(1).getName());
assertEquals(1, user.getFriend().getId());
assertEquals(2, user.getFriend().getRoles().size());
assertEquals("teacher", user.getFriend().getRoles().get(0).getName());
assertEquals("Headmaster", user.getFriend().getRoles().get(1).getName());
}
}
}
Expand Up @@ -23,6 +23,7 @@ public class User {
private List<User> teachers;
private Role role;
private List<Role> roles;
private User friend;

public Role getRole() {
return role;
Expand Down Expand Up @@ -72,4 +73,12 @@ public List<User> getTeachers() {
public void setTeachers(List<User> teachers) {
this.teachers = teachers;
}

public User getFriend() {
return friend;
}

public void setFriend(User friend) {
this.friend = friend;
}
}
Expand Up @@ -69,4 +69,23 @@ public interface UserDao {
@Result(column = "teacher_name", property = "username")
})
List<User> justUseResult();

@Select({ "select",
" u.id, u.username, r.id role_id, r.name role_name,",
" f.id friend_id, f.username, fr.id friend_role_id, fr.name friend_role_name",
" from user u",
" left join user_role ur on u.id = ur.user_id",
" left join role r on ur.role_id = r.id" ,
" left join user f on u.friend_id = f.id",
" left join user_role fur on f.id = fur.user_id",
" left join role fr on fur.role_id = fr.id" ,
" where u.id = #{userId} order by r.id, fr.id"
})
@Results(id = "userWithFriendMap", value = {
@Result(id = true, column = "id", property = "id"),
@Result(column = "username", property = "username"),
@Result(property = "roles", many = @Many(resultMap = "org.apache.ibatis.submitted.annotion_many_one_add_columnprefix.RoleDao.roleMap1", columnPrefix = "role_")),
@Result(property = "friend", one = @One(resultMap = "org.apache.ibatis.submitted.annotion_many_one_add_columnprefix.UserDao.userWithFriendMap", columnPrefix = "friend_"))
})
User findUserWithFriend(Integer userId);
}

0 comments on commit 494dccf

Please sign in to comment.