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());
}
}
//映射一对多
@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());
}
}