结果集映射使用注解(三)

来源:互联网 发布:淘宝智能旺铺多少钱 编辑:程序博客网 时间:2024/04/29 09:16
public interface GradeMapper {
//映射一对多
@Results(
{
@Result(id=true,property="gid",column="gid"),
@Result(property="gnamed",column="gname"),
@Result(property="students",column="gid",javaType=List.class,many=@Many(select="cn.et.lesson3.resultMap.annotion.StudentMapper.queryStudentByGid"))

})
@Select("select * from grade where gid=#{0}")
public abstract Grade queryGrade(String gid);



@Results({
@Result(property="gnamed",column="gname")

})
@Select("select * from grade where gid=#{0}")
public abstract Grade queryGradeByGid(int gid);
}


public interface StudentMapper {

//映射多对一
@Results({
@Result(property="grade",column="gid",one=@One(select="cn.et.lesson3.resultMap.annotion.GradeMapper.queryGradeByGid"))
})
@Select("select * from student where sid=#{0}")
public Student queryStudent(int sid);


@Select("select * from student where gid=#{0}")
public List<Student> queryStudentByGid(int sid);

}


测试方法:
 
  private  SqlSession getSession() throws IOException {
// mybatis核心配置文件路径
String resource = "cn/et/lesson3/resultMap/annotion/mybatis.xml";


InputStream inputStream = Resources.getResourceAsStream(resource);
// 工厂类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
// session操作的是指向sql语句的一个唯一标识符
SqlSession openSession = sqlSessionFactory.openSession();
return openSession;
}






@Test
public  void testManytoOne() throws IOException {

SqlSession openSession = getSession();

StudentMapper mapper = openSession.getMapper(StudentMapper.class);

Student queryStudent = mapper.queryStudent(1);
 
System.out.println(queryStudent.getSname()+"----"+queryStudent.getGrade().getGid());
 
}

@Test
public  void testOnetoMany() throws IOException {

SqlSession openSession = getSession();

GradeMapper mapper = openSession.getMapper(GradeMapper.class);

Grade queryGrade = mapper.queryGrade("2");
 
System.out.println(queryGrade.getGid()+"---"+queryGrade.getGnamed());
 
for(Student tmp: queryGrade.getList()){
System.out.println(tmp.getSname());
}
}