一、ResultType
ResultType相对与ResultMap而言更简单一点。只有满足ORM(Object Relational Mapping,对象关系映射)时,即数据库表中的字段名和实体类中的属性完全一致时,才能使用,否则会出现数据不显示的情况。如图所示,由于实体类Order的属性和表tb_order的字段不一致,导致页面数据不显示。
ResultMap
ResultMap和ResultType的功能类似,但是ResultMap更强大一点,ResultMap可以实现将查询结果映射为复杂类型的pojo。
两者的区别为:
对象不同
(1)resultMap:查询出的列名和pojo(java的普通对象)的属性名不一致,通过resultMap和pojo做一个映射关系。
(2)resultType:使用resultType进行输出映射
描述不同:
(1)resultMap:resultMap对于一对一表连接的处理方式通常为在主表的pojo中添加嵌套另一个表的pojo
(2)resultType:resultType无法查询结果映射到pojo对象的pojo属性中,根据对结构集查询遍历的需要选择使用resultType还是resultMap。
3.类型适用不同:
(1)resultMap:mybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap。
(2)resultType:resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。