什么是结果映射?
resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。
结果映射应用场景
有两张表,其中一张是学生表,另一张是老师表,其中多个学生对应一个老师,现在想查询所有学生及对应老师的信息。其中就涉及到一对多以及多对一的复杂查询。
resultMap属性介绍
id:定义resultMap的唯一标识
type:定义该resultMap最终映射的pojo对象
autoMapping:主要功能是完成结果集的映射,在映射是会将resultMapping中的字段按照名称相同的方式映射到返回类型的对应属性上,在映射时会自动忽略大小写。比如查询出的字段是Student但是返回类型中有一个属性是student,并且有一个setstudent的方法,这样是可以匹配成功的,能够自动完成映射,将返回的值映射给对应的返回类型中的Id。
extends:继承父类的resultMap,然后父类有的那一部分属性标签就不用再重复定义了。
Resultmap子标签 | |||
序号 | 元素名称 | 子元素 | 使用 |
1 | constructor | idArg 、arg | 用于配置构造器方法 |
2 | id | 将结果集标记为id,以方便全局调用 | |
3 | result | 配置POJO到数据库列名映射关系 | |
4 | association | 级联使用 | 代表一对一关系 |
5 | collection | 级联使用 | 代表一对多关系 |
6 | discriminator | 级联使用 | 鉴别器 根据实际选择实例,可以通过特定条件确定结果集 |