Skip to content

Commit

Permalink
added a few change
Browse files Browse the repository at this point in the history
  • Loading branch information
moonService committed Dec 24, 2019
1 parent 50e2f10 commit 2f6023e
Show file tree
Hide file tree
Showing 7 changed files with 85 additions and 29 deletions.
2 changes: 1 addition & 1 deletion src/main/java/org/apache/ibatis/annotations/Many.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
*
* @return the id that retrieves result map.
*/
String resultMapId() default "";
String resultMap() default "";
/**
* Returns the statement id that retrieves collection.
*
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/apache/ibatis/annotations/One.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
*
* @return the id that retrieves result map.
*/
String resultMapId() default "";
String resultMap() default "";
/**
* Returns the statement id that retrieves single object.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -565,9 +565,9 @@ private void applyResults(Result[] results, Class<?> resultType, List<ResultMapp
}

private String nestedResultMapId(Result result) {
String resultMapId = result.one().resultMapId();
String resultMapId = result.one().resultMap();
if (resultMapId.length() < 1) {
resultMapId = result.many().resultMapId();
resultMapId = result.many().resultMap();
}
if (!resultMapId.contains(".")) {
resultMapId = type.getName() + "." + resultMapId;
Expand All @@ -576,10 +576,10 @@ private String nestedResultMapId(Result result) {
}

private boolean hasNestedResultMap(Result result) {
if (result.one().resultMapId().length() > 0 && result.many().resultMapId().length() > 0) {
if (result.one().resultMap().length() > 0 && result.many().resultMap().length() > 0) {
throw new BuilderException("Cannot use both @One and @Many annotations in the same @Result");
}
return result.one().resultMapId().length() > 0 || result.many().resultMapId().length() > 0;
return result.one().resultMap().length() > 0 || result.many().resultMap().length() > 0;
}

private String nestedSelectId(Result result) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ role_name varchar(10)
-- Records of role
-- ----------------------------
INSERT INTO role (id,role_name)
VALUES ('1', '老师');
VALUES ('1', 'teacher');
INSERT INTO role (id,role_name)
VALUES ('2', '学生');
VALUES ('2', 'student');
INSERT INTO role (id,role_name)
VALUES ('3', '班主任');
VALUES ('3', 'Headmaster');
INSERT INTO role (id,role_name)
VALUES ('4', '学习委员');
VALUES ('4', 'Learning-commissary');

CREATE TABLE user (
id int,
Expand All @@ -27,13 +27,13 @@ username varchar(32),
-- Records of user
-- ----------------------------
INSERT INTO user (id,username)
VALUES ('1', '赵六');
VALUES ('1', 'James Gosling');
INSERT INTO user (id,username)
VALUES ('2', '李四');
VALUES ('2', 'Doug Lea');
INSERT INTO user (id,username)
VALUES ('3', '毛六');
VALUES ('3', 'Rod johnson');
INSERT INTO user (id,username)
VALUES ('4', '王五');
VALUES ('4', 'Juergen Hoeller');

-- ----------------------------
-- Table structure for `user_role`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,36 +29,48 @@ static void setUp() throws Exception {
}

@Test
void test() {
void testFindAll() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()){
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> users = mapper.flindAll();
List<User> users = mapper.findAll();
Assertions.assertNotNull(users, "users must not be null");
Assertions.assertEquals(4, users.size(), "should return 4 results");
Assertions.assertEquals(2, users.get(0).getRoles().size(), "should have 2 roles");
}
}

@Test
void test2() {
void testFindAll2() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()){
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> users = mapper.flindAll2();
List<User> users = mapper.findAll2();
Assertions.assertNotNull(users, "users must not be null");
Assertions.assertEquals(4, users.size(), "should return 4 results");
Assertions.assertEquals(2, users.get(0).getRoles().size(), "should have 2 roles");
}
}

@Test
void test3() {
void testFindAll3() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()){
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> users = mapper.flindAll3();
List<User> users = mapper.findAll3();
Assertions.assertNotNull(users, "users must not be null");
Assertions.assertEquals(2, users.size(), "should return 2 results");
Assertions.assertEquals(1, users.get(0).getRoles().size(), "should have 1 roles");
Assertions.assertEquals("老师", users.get(0).getRoles().get(0).getRoleName(), "should have 1 roles");
Assertions.assertNotNull(users.get(0).getRole(), "role must not be null");
Assertions.assertEquals("teacher", users.get(0).getRole().getRoleName(), "roleName should be teacher");
}
}


@Test
void testFindHeadmaster() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()){
UserDao mapper = sqlSession.getMapper(UserDao.class);
User headmaster = mapper.findHeadmaster();
Assertions.assertNotNull(headmaster, "users must not be null");
Assertions.assertEquals(3, headmaster.getTeachers().size(), "should return 3 results");
Assertions.assertEquals("Doug Lea", headmaster.getTeachers().get(0).getUsername(), "userName should be lisi");
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,19 @@
public class User {
private Integer id; //int
private String username; //varchar
private List<User> teachers;
private Role role;
private List<Role> roles;

public Role getRole() {
return role;
}

public void setRole(Role role) {
this.role = role;
}


@Override
public String toString() {
return "User{" +
Expand Down Expand Up @@ -40,4 +51,11 @@ public List<Role> getRoles() {
public void setRoles(List<Role> roles) {
this.roles = roles;
}
public List<User> getTeachers() {
return teachers;
}

public void setTeachers(List<User> teachers) {
this.teachers = teachers;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ public interface UserDao {
@Results({
@Result(id = true,column="id",property = "id"),
@Result(column="username",property = "username"),
@Result(property = "roles",many = @Many(resultMapId = "org.apache.ibatis.submitted.annotion_many_one_add_resultmapid.RoleDao.roleMap1"))
@Result(property = "roles",many = @Many(resultMap = "org.apache.ibatis.submitted.annotion_many_one_add_resultmapid.RoleDao.roleMap1"))
})
public List<User> flindAll();
public List<User> findAll();

@Select("select\n" +
" u.id,u.username,r.id role_id,r.role_name\n" +
Expand All @@ -36,19 +36,45 @@ public interface UserDao {
@Results({
@Result(id = true,column="id",property = "id"),
@Result(column="username",property = "username"),
@Result(property = "roles",many = @Many(resultMapId = "org.apache.ibatis.submitted.annotion_many_one_add_resultmapid.RoleDao.roleMap2"))
@Result(property = "roles",many = @Many(resultMap = "org.apache.ibatis.submitted.annotion_many_one_add_resultmapid.RoleDao.roleMap2"))
})
public List<User> flindAll2();
public List<User> findAll2();

@Select("select\n" +
" u.id,u.username,r.id role_id,r.role_name\n" +
" from user u\n" +
" left join user_role ur on u.id =ur.user_id\n" +
" left join role r on ur.role_id = r.id where u.id in (2,3)")
@Results({
@Results(
{
@Result(id = true,column="id",property = "id"),
@Result(column="username",property = "username"),
@Result(property = "roles",one = @One(resultMapId = "org.apache.ibatis.submitted.annotion_many_one_add_resultmapid.RoleDao.roleMap2"))
@Result(property = "role",one = @One(resultMap = "org.apache.ibatis.submitted.annotion_many_one_add_resultmapid.RoleDao.roleMap2"))
})
public List<User> findAll3();

@Select("select id teacher_id,username teacher_name from user")
@Results(
id = "userMap",
value = {
@Result(id = true,column="teacher_id",property = "id"),
@Result(column="teacher_name",property = "username"),
})
public List<User> flindAll3();
public List<User> justUseResult();

@Select("select\n" +
"u.id,u.username,r.id role_id,r.role_name,ut.id teacher_id,ut.username teacher_name\n" +
"from user u\n" +
"left join user_role ur on u.id =ur.user_id\n" +
"left join role r on ur.role_id = r.id\n" +
"left join user ut on ut.id != u.id\n" +
"where role_id = 3"
)
@Results({
@Result(id = true,column="id",property = "id"),
@Result(column="username",property = "username"),
@Result(property = "role",one = @One(resultMap = "org.apache.ibatis.submitted.annotion_many_one_add_resultmapid.RoleDao.roleMap2")),
@Result(property = "teachers",many = @Many(resultMap = "userMap")),
})
public User findHeadmaster();
}

0 comments on commit 2f6023e

Please sign in to comment.