在MyBatis中,resultType和resultMap都是用于处理查询结果的,但它们之间存在一些关键的区别。
-  映射方式: - resultType:直接表示返回类型,它通常对应着Java模型对象(如POJO)中的实体。当查询出来的列名和Java对象的属性名一致时,MyBatis可以自动地将查询结果映射到这些属性上。这种方式比较直接和简单,但可能不适用于复杂的查询或需要特殊映射的场景。
- resultMap:允许你自定义结果集的映射规则。它通常用于处理更复杂的查询结果,特别是当数据库中的列名和Java对象的属性名不完全一致,或者查询结果包含多个表的数据时。在- resultMap中,你可以通过- <id>、- <result>等标签来指定数据库列和Java对象属性之间的映射关系。
 
-  灵活性: - resultType:相对简单,适用于简单的查询和映射。
- resultMap:提供了更大的灵活性,允许你处理复杂的查询结果和映射规则。你可以使用- <association>和- <collection>等标签来处理一对多、多对一等复杂的关联关系。
 
-  使用场景: - 当你的查询结果可以直接映射到Java对象的属性时,使用resultType可能是最简单的选择。
- 但是,当查询结果需要特殊的处理或映射,或者查询结果包含多个表的数据时,你可能需要使用resultMap来定义自定义的映射规则。
 
- 当你的查询结果可以直接映射到Java对象的属性时,使用
-  是否同时存在: - 在一个查询映射中,resultType和resultMap不能同时存在。你需要根据查询的复杂性和需求来选择使用哪一个。
 
- 在一个查询映射中,
-  返回值类型: - resultType的返回值类型可以是基本类型、对象类型、List类型或Map类型等。你可以直接指定这些类型的全类名或别名。
- resultMap则是对外部ResultMap的引用,你需要提前定义好db和model之间的映射关系。
 
总的来说,resultType和resultMap各有优缺点,你应该根据你的具体需求和使用场景来选择使用哪一个。