实际的开发中,往往我们需要多表联查获取数据,以下给出一个例子:
场景描述:
获取学生信息,包括学生姓名,课程名,任课老师姓名。
场景分析:
学生实体中包含课程集合,课程实体中包含老师id,通过学生-课程关系表将各个结果集串联起来,从而可以获取所需信息。
场景实现:
掌握MyBatis的基础使用后,此处的难点、不同点就主要集中在mapper.xml中了。下面给出映射关系图(略显凌乱,凑合看哈):
图中红线相连部分即使名称应该对应的部分,有几处要特别说明:
- Student的id、名称获取方式是利用constructor标签,这里要与实体类中定义的构造器相匹配,column对应的是sql查询出的字段名,javaType对应构造器定义的类型,需要额外指出的是int类型需要转变成Integer,否则会提示NoSuchMethodException异常
- Course类、Teacher类必须包含无参构造器,否则将无法赋值,提示NoSuchMethodException异常
- collection标签获取course集合信息,association标签用来处理关联关系,每一个属性的使用这里不多做赘述,更多属性使用细节可参考W3Cschool提供的教程:W3Cschool MyBatis教程。