Mybatis框架中resultType和resultMap的区别

2024-09-05 19:52

本文主要是介绍Mybatis框架中resultType和resultMap的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

resultTyperesultMap 是 MyBatis 框架中用于处理查询结果映射的两种方式。

   1. resultType

  • 定义resultType 是最简单的结果映射方式,直接将查询结果映射为指定的 Java 类。
  • 用法:适用于数据库表字段名和 Java 类字段名一致的情况。
  • 优点
    • 简单易用,代码简洁。
    • 适合表字段和 Java 对象属性一一对应的情况。
  • 缺点
    • 当数据库表字段和 Java 对象字段名不一致时,需要使用别名来处理。
  • 无法处理复杂的映射关系(如嵌套对象、多对一、一对多等情况)。
    <select id="selectUser" resultType="com.example.User">SELECT id, name, age FROM users
    </select>
    

    查询的结果将自动映射到 User 类的 id, name, age 字段上

  • 2. resultMap

  • 定义resultMap 是 MyBatis 提供的更为灵活的结果映射方式,可以用来处理复杂的映射关系。
  • 用法:适用于字段名和 Java 类属性名不一致,或者需要进行复杂映射的情况(如嵌套对象、关联查询等)。
  • 优点
    • 支持复杂的映射,比如字段名与属性名不一致、嵌套对象映射、关联查询等。
    • 更具可读性,能够清晰定义每个字段的映射关系。
  • 缺点
    • 配置较为复杂,需要手动指定每个字段的映射。
    • <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="selectUser" resultMap="userResultMap">SELECT user_id, user_name, user_age FROM users
      </select>
      

resultMap 允许将数据库表中的 user_iduser_nameuser_age 映射到 Java 对象 Useridnameage 属性上。 

这篇关于Mybatis框架中resultType和resultMap的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139910

相关文章

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

mybatis-plus如何根据任意字段saveOrUpdateBatch

《mybatis-plus如何根据任意字段saveOrUpdateBatch》MyBatisPlussaveOrUpdateBatch默认按主键判断操作类型,若需按其他唯一字段(如agentId、pe... 目录使用场景方法源码方法改造首先在service层定义接口service层接口实现总结使用场景my

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片