Maybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap
- resultType是直接表示返回类型的(对应着我们的model对象中的实体)
- resultMap则是对外部ResultMap的引用(提前定义了db和model之间的映射key->value关系)
- resultType和resultMap不能同时存在
- 如果能确认返回信息在一个完整实体类中推荐用resultType,返回信息不在一个完整实体类中推荐用resultMap
这里我们举个例子
emp员工表:
dept部门表:
如果我们返回的数据为:员工编号,员工姓名,职位,这些信息都在emp表中,那用resultType
如果我们返回的数据为:员工编号,员工姓名,职位,对应的部门编号,部门名称,部门地址,这些信息存在于emp和dept表,需要做关联,那用resultMap
在Mybatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面,其中键是属性名,值是其对应的值。
- 当提供的返回类型属性的resultType是,Mybatis会将Map里面的键值对取出赋给resultType所指定的对象对应属性。所以其实Mybatis的每一个查询映射的返回类型都是resultMap,只是当提供的返回类型属性是resultType时,Mybatis对自动的给把对应的值赋给resultType所指定对象的属性
- 当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。