Skip to content

Commit 494dccf

Browse files
committed
Added a test demonstrating nested column prefix
1 parent e26ca61 commit 494dccf

File tree

4 files changed

+47
-2
lines changed

4 files changed

+47
-2
lines changed

src/test/java/org/apache/ibatis/submitted/annotion_many_one_add_columnprefix/CreateDB.sql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ VALUES ('4', 'Learning-commissary');
3737
CREATE TABLE user (
3838
id int,
3939
username varchar(32),
40+
friend_id int
4041
);
4142

4243
-- ----------------------------
@@ -48,8 +49,8 @@ INSERT INTO user (id,username)
4849
VALUES ('2', 'Doug Lea');
4950
INSERT INTO user (id,username)
5051
VALUES ('3', 'Rod johnson');
51-
INSERT INTO user (id,username)
52-
VALUES ('4', 'Juergen Hoeller');
52+
INSERT INTO user (id,username, friend_id)
53+
VALUES ('4', 'Juergen Hoeller', 1);
5354

5455
-- ----------------------------
5556
-- Table structure for `user_role`

src/test/java/org/apache/ibatis/submitted/annotion_many_one_add_columnprefix/OneManyColumnPrefixTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,20 @@ void shouldUseColumnPrefixWithOne() {
7878
assertEquals("teacher", users.get(0).getRole().getName());
7979
}
8080
}
81+
82+
@Test
83+
void shouldResolveNestedColumnPrefix() {
84+
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
85+
UserDao mapper = sqlSession.getMapper(UserDao.class);
86+
User user = mapper.findUserWithFriend(4);
87+
assertEquals(4, user.getId());
88+
assertEquals(2, user.getRoles().size());
89+
assertEquals("student", user.getRoles().get(0).getName());
90+
assertEquals("Learning-commissary", user.getRoles().get(1).getName());
91+
assertEquals(1, user.getFriend().getId());
92+
assertEquals(2, user.getFriend().getRoles().size());
93+
assertEquals("teacher", user.getFriend().getRoles().get(0).getName());
94+
assertEquals("Headmaster", user.getFriend().getRoles().get(1).getName());
95+
}
96+
}
8197
}

src/test/java/org/apache/ibatis/submitted/annotion_many_one_add_columnprefix/User.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class User {
2323
private List<User> teachers;
2424
private Role role;
2525
private List<Role> roles;
26+
private User friend;
2627

2728
public Role getRole() {
2829
return role;
@@ -72,4 +73,12 @@ public List<User> getTeachers() {
7273
public void setTeachers(List<User> teachers) {
7374
this.teachers = teachers;
7475
}
76+
77+
public User getFriend() {
78+
return friend;
79+
}
80+
81+
public void setFriend(User friend) {
82+
this.friend = friend;
83+
}
7584
}

src/test/java/org/apache/ibatis/submitted/annotion_many_one_add_columnprefix/UserDao.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,23 @@ public interface UserDao {
6969
@Result(column = "teacher_name", property = "username")
7070
})
7171
List<User> justUseResult();
72+
73+
@Select({ "select",
74+
" u.id, u.username, r.id role_id, r.name role_name,",
75+
" f.id friend_id, f.username, fr.id friend_role_id, fr.name friend_role_name",
76+
" from user u",
77+
" left join user_role ur on u.id = ur.user_id",
78+
" left join role r on ur.role_id = r.id" ,
79+
" left join user f on u.friend_id = f.id",
80+
" left join user_role fur on f.id = fur.user_id",
81+
" left join role fr on fur.role_id = fr.id" ,
82+
" where u.id = #{userId} order by r.id, fr.id"
83+
})
84+
@Results(id = "userWithFriendMap", value = {
85+
@Result(id = true, column = "id", property = "id"),
86+
@Result(column = "username", property = "username"),
87+
@Result(property = "roles", many = @Many(resultMap = "org.apache.ibatis.submitted.annotion_many_one_add_columnprefix.RoleDao.roleMap1", columnPrefix = "role_")),
88+
@Result(property = "friend", one = @One(resultMap = "org.apache.ibatis.submitted.annotion_many_one_add_columnprefix.UserDao.userWithFriendMap", columnPrefix = "friend_"))
89+
})
90+
User findUserWithFriend(Integer userId);
7291
}

0 commit comments

Comments
 (0)