mybatis中的resultType和resultMap

2023-11-22 18:29

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

当我们在 MyBatis 中执行查询语句时,需要指定如何映射查询结果到 Java 对象。MyBatis 提供了两种方式来定义映射关系:​resultType​ 和 ​resultMap​。

  1. ​resultType​:
  • ​resultType​ 用于指定单个简单类型或者 Java Bean 对象作为查询结果的映射类型。
  • 对于简单的查询结果,我们可以直接指定一个 Java 类型作为映射类型。MyBatis 将自动根据查询结果列的名称和 Java 对象的属性名称进行映射,完成结果的赋值。
  • 如果查询的列数量与 Java 对象属性数量不一致,或者列名称与属性名称不匹配,MyBatis 将使用默认规则进行映射。如果需要更精确的映射,可以使用别名解决列名与属性名不匹配的问题。

以下是一个示例,假设有一个 Student 表,包含字段 id、name 和 age,我们可以直接使用 ​resultType​ 指定映射类型为 Student 类,以及指定别名解决列名和属性名不匹配的问题:

<select id="findStudent" resultType="Student">SELECT id, name, ageFROM student
</select>

2. resultMap: 

  • ​resultMap​ 用于定义复杂的结果映射关系,可以处理多个属性,以及一对一、一对多等复杂的对象关系。
  • 我们可以在 ​resultMap​ 中定义映射规则,指定列和属性之间的映射关系,以及处理对象之间的关系,如一对一、一对多等关系。
  • 可以重复利用已定义的 ​resultMap​,并且可以在映射过程中进行一些额外的处理,如设置属性的读写方法、类型转换器、结果集的嵌套映射等。

以下是一个示例,我们可以定义一个 ​resultMap​ 来映射 Student 对象,并处理与 Course 对象之间的一对多关系:

<resultMap id="studentMap" type="Student"><id property="id" column="id" /><result property="name" column="name" /><result property="age" column="age" /><collection property="courses" resultMap="courseMap"/>
</resultMap><resultMap id="courseMap" type="Course"><id property="id" column="course_id" /><result property="name" column="course_name" />
</resultMap><select id="findStudent" resultMap="studentMap">SELECT s.id, s.name, s.age, c.course_id, c.course_nameFROM student sLEFT JOIN course c ON s.id = c.student_id
</select>

 在上面的示例中,我们使用 ​resultMap​ 定义了两个映射关系:​studentMap​ 用于映射 Student 对象,​courseMap​ 用于映射 Course 对象。在 ​studentMap​ 中我们指定了 Student 对象的属性与列之间的映射关系,并使用 ​<collection>​ 元素指定了 Student 和 Course 之间的一对多关系,通过 ​resultMap="courseMap"​ 实现对 Course 数组的映射。在查询语句中,我们将这两个 ​resultMap​ 使用 ​resultMap​ 属性进行关联。

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



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

相关文章

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

Mybatis从3.4.0版本到3.5.7版本的迭代方法实现

《Mybatis从3.4.0版本到3.5.7版本的迭代方法实现》本文主要介绍了Mybatis从3.4.0版本到3.5.7版本的迭代方法实现,包括主要的功能增强、不兼容的更改和修复的错误,具有一定的参考... 目录一、3.4.01、主要的功能增强2、selectCursor example3、不兼容的更改二、

mybatis-plus分页无效问题解决

《mybatis-plus分页无效问题解决》本文主要介绍了mybatis-plus分页无效问题解决,原因是配置分页插件的版本问题,旧版本和新版本的MyBatis-Plus需要不同的分页配置,感兴趣的可... 昨天在做一www.chinasem.cn个新项目使用myBATis-plus分页一直失败,后来经过多方

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景