resultMap和resultType是MyBatis在解析SQL查询结果时使用的两种映射方式,它们之间的主要区别如下:
1.映射对象的类型:
resultType直接指定了查询结果要映射到的Java类型,通常是简单的POJO类。
resultMap则可以定义更加复杂的映射关系,比如一对一、一对多的关联关系。
2.使用场景:
resultType适用于简单的查询,结果集直接映射到单一的Java对象。
resultMap适用于复杂的查询,需要对结果集进行深度定制映射的场景。
3.定义方式:
resultType通常在<select>标签的属性中直接指定。
resultMap需要单独定义在<resultMap>标签中,然后在<select>标签中引用,注意使用resultMap时必须要写主键,也就是id里面的东西。
灵活性:
4.resultMap更加灵活,可以实现复杂的映射关系,比如属性名称映射、嵌套结果映射等。
resultType相对简单,只能进行简单的属性名称映射。
总的来说,resultType适合简单查询,resultMap适合复杂查询。在实际开发中,根据具体的业务需求选择合适的方式即可。