Mybatis mapper文件 resultType和resultMap的区别

打印 上一主题 下一主题

主题 1878|帖子 1878|积分 5634

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在 MyBatis 中,resultType 和 resultMap 都用于界说从数据库查询效果到 Java 对象的映射规则,但它们之间存在着一些关键的区别。以下是对这两者的详细说明和区别:
1. resultType

界说

resultType 是 MyBatis 查询语句中的一个属性,用于指定查询效果的 Java 范例。它告诉 MyBatis 应该将查询的效果映射为哪种类的对象。
用法



  • 适用于简朴的对象映射,尤其是当查询返回的列名直接与 Java 对象的属性相符适时。
  • 可以直接使用基本数据范例或类名。
示例

  1. <select id="getStudentById" resultType="com.example.Student">
  2.     SELECT id, name, age FROM students WHERE id = #{id}
  3. </select>
复制代码
在这个例子中,查询效果中的 id、name 和 age 列将会直接映射到 Student 类的对应属性上。
2. resultMap

界说

resultMap 是 MyBatis 的一个更灵活和复杂的映射机制,用于界说更具体的映射规则,包括列名与属性之间的自界说映射、嵌套效果映射等。
用法



  • 当查询效果的列名与 Java 对象的属性名不完全匹配,或者有更复杂的映射关系时,使用 resultMap 更为合适。
  • 支持多种范例的映射,包括一对多、多对一和嵌套映射。
示例

  1. <resultMap id="studentResultMap" type="com.example.Student">
  2.     <result property="id" column="id"/>
  3.     <result property="name" column="name"/>
  4.     <result property="age" column="age"/>
  5. </resultMap>
  6. <select id="getStudentById" resultMap="studentResultMap">
  7.     SELECT id, name, age FROM students WHERE id = #{id}
  8. </select>
复制代码
在这个例子中,resultMap 明确地界说了 Student 对象的每个属性与 SQL 查询中每个列名之间的对应关系。

总结

在选择使用 resultType 照旧 resultMap 时,应该根据业务需求和查询的复杂性举行选择。假如映射关系简朴且列名与属性名雷同,使用 resultType 更加方便;若需要自界说映射关系或处理复杂的对象结构,使用 resultMap 将更加灵活和强大。选择合适的映射方式,有助于进步代码的可读性和维护性。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表