mybatis中<association> 和 <collection>

2023-12-01 20:28

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

在 MyBatis 中,<association><collection> 是用于配置结果映射中关联关系的两个元素。

<association> 用于配置一对一的关联关系,表示两个对象之间的关系是一对一的。例如,一个订单对象关联一个用户对象,使用 <association> 进行配置。

<collection> 用于配置一对多的关联关系,表示一个对象关联多个对象。例如,一个部门对象关联多个员工对象,使用 <collection> 进行配置。

主要区别:

  1. 关联关系类型:<association> 表示一对一的关联关系,而 <collection> 表示一对多的关联关系。

  2. 配置位置:<association><collection> 元素通常在 <resultMap> 中使用,用于定义结果映射规则。<association> 用于配置单个属性的关联关系,而 <collection> 用于配置集合属性的关联关系。

  3. 属性映射:<association> 使用 <id><result> 进行属性映射的配置,用于将关联对象的属性与查询结果进行映射。<collection> 除了使用 <id><result> 进行属性映射外,还使用 <association> 进行嵌套的关联关系配置,用于定义集合元素对象内部的关联关系。

  4. 查询语句:<association> 通常对应一个单独的查询语句,用于获取关联对象的数据。<collection> 通常也对应一个查询语句,用于获取关联对象的集合数据。

示例:
下面是一个示例的 Java 实体类,用于表示订单(Order)、用户(User)和订单项(OrderItem)的关系:


public class Order {private int orderId;private String orderNumber;private User user;private List<OrderItem> orderItems;}public class User {private int userId;private String username;}public class OrderItem {private int orderItemId;private String itemName;private int quantity;}

在上述示例中,Order 类表示订单,包含了订单的基本信息(orderIdorderNumber),以及关联的用户对象(user)和订单项对象集合(orderItems)。

User 类表示用户,包含了用户的基本信息(userIdusername)。

OrderItem 类表示订单项,包含了订单项的基本信息(orderItemIditemNamequantity)。

xml配置:
当使用 MyBatis 的 XML 配置文件进行结果映射时,以下是 <association><collection> 元素的示例配置:

<resultMap id="orderResultMap" type="Order"><id property="orderId" column="order_id" /><result property="orderNumber" column="order_number" /><association property="user" javaType="User"><id property="userId" column="user_id" /><result property="username" column="username" /></association><collection property="orderItems" ofType="OrderItem"><id property="orderItemId" column="item_id" /><result property="itemName" column="item_name" /><result property="quantity" column="quantity" /></collection>
</resultMap><select id="getOrderById" resultMap="orderResultMap">SELECT * FROM orders WHERE order_id = #{orderId}</select>

使用 <association> 配置了 user 属性的关联关系。property 属性指定了关联属性的名称为 userjavaType 属性指定了关联属性的类型为 User。在 <association> 元素内部,使用 <id><result> 元素进行属性映射的配置。
使用 <collection> 配置了 orderItems 属性的关联关系。property 属性指定了关联属性的名称为 orderItemsofType 属性指定了集合元素的类型为 OrderItem。在 <collection> 元素内部,同样使用 <id><result> 元素进行属性映射的配置。

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



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

相关文章

将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用法及示例案例背景

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入