温馨提示×

mybatis中resulttype和resultmap有什么区别

小亿
98
2024-01-16 10:09:56
栏目: 编程语言

在MyBatis中,resultType和resultMap都用于指定查询结果的映射方式,但有以下区别:

  1. resultType:resultType用于指定查询结果的映射类型。它可以是Java基本类型、JavaBean或集合类型。当查询结果只有一个字段时,可以使用resultType指定映射类型。例如:

    <select id="getUserName" resultType="java.lang.String">
      SELECT name FROM user WHERE id = #{id}
    </select>
    

    当查询结果为多个字段时,无法使用resultType进行映射,需要使用resultMap。

  2. resultMap:resultMap用于定义查询结果的映射规则。它可以自定义映射规则,将查询结果的字段与Java对象的属性进行映射。resultMap需要在Mapper XML文件中进行定义。例如:

    <resultMap id="userResultMap" type="com.example.User">
      <id property="id" column="user_id" />
      <result property="name" column="user_name" />
      <result property="age" column="user_age" />
    </resultMap>
    
    <select id="getUser" resultMap="userResultMap">
      SELECT id AS user_id, name AS user_name, age AS user_age FROM user WHERE id = #{id}
    </select>
    

    上述示例中,resultMap定义了一个id为userResultMap的映射规则,指定了查询结果字段user_id、user_name和user_age与User对象的id、name和age属性的映射关系。在select语句中使用resultMap属性引用了这个映射规则。如果查询结果有多个字段,且需要进行复杂的映射关系处理时,可以使用resultMap。

综上所述,resultType适用于简单的查询结果映射,而resultMap适用于复杂的查询结果映射。

0