当前位置: 首页 > news >正文

[mybatis]resultMap详解

resultMap

    Mybatis中提供了resultMap功能,可以将数据库查询结果映射到Java对象,用于解决 字段名与属性名不一致复杂关系(如一对多)的映射问题。 

比如一个User类,在它的属性里还有另一个子对象(或者多个),可以是个List或者其他实体类,这个时候就需要用到

    格式:

<resultMap type="User" id="userOrderMap">

type:要映射的实体类;id:给该resultMap定义一个唯一标识符。

id、result标签:用于映射指定的属性(不包含除String外的实体类对象),这两者的在映射上没有太多不同。id可以用于标识对象的主键字段,提升性能(MyBatis用主键判断对象是否重复)。

<resultMap id="" type=""><id column="" property=""></id><result column="" property=""></id>
</resultMap>

column:对应表的列名

property:java对象的属性名

collection标签:用于映射一对多的子对象,比如将多条数据映射到某个集合中(集合的元素类型是某种实体类)。如果有点晕,就记得:给集合、map等类型的属性赋值,使用collection

<!-- 给list的属性赋值-->
<collection property="" ofType=""><id column="" property=""></id><result column="" property=""></id>
</collection><!-- 给map属性赋值-->
<collection property=""           javaType="java.util.HashMap"  <!-- 固定为某个Map,此处写的是HashMap -->ofType=""         keyColumn=""           <!-- 指定作为Map键的列 -->keyProperty=""              <!-- 键值对中,值对象中作为键的属性 -->
><id column="" property=""/><result column="" property=""/>
</collection>

property:父对象中对应的子对象

ofType:子对象对应的数据类型,比如该子对象的数据类型是User类,那么此处就填写User。如果是给Map元素赋值,那么该属性的功能是指定 value 的数据类型

keyColumn:在映射Map类型数据时,用于指定key 的数据类型

给Map映射的内容,光描述比较抽象难懂,下面是个示例:

public class Order {private Long id;private String orderNumber;private Map<Long, OrderItem> itemMap; // 键为商品ID,值为OrderItem对象// Getters & Setters
}public class OrderItem {private Long id;        // 与keyProperty="id"对应private String name;private Integer quantity;// Getters & Setters
}//映射后的数据结构order.getItemMap() = {1001: OrderItem(id=1001, name="商品A", quantity=2),1002: OrderItem(id=1002, name="商品B", quantity=5)
}

 <association>标签

    与使用collection标签映射List用法一致,只是将collection改成association即可。区别在于,collection是给集合中多个元素的属性进行赋值,association是给父对象的某一个子对象元素中的属性进行赋值。

示例:

<association property="user" javaType="User"><id column="id" property="id"/>             <result column="username" property="name"/>   <result column="sex" property="sex"/>        <!-- 其他字段映射... -->
</association>

                                                           


http://www.mrgr.cn/news/93285.html

相关文章:

  • TrustRAG:通过配置化模块化的检索增强生成(RAG)框架提高生成结果的可靠性和可追溯性
  • 前端权限流程(基于rbac实现思想)
  • 数据结构基础之《(19)—矩阵处理》
  • conda环境搭建记录
  • C++ 测试案例
  • TypeScript(正在修改)
  • 【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824
  • HRNet的pt模型转rknn并实现前向推理
  • 【项目日记(八)】内存回收与联调
  • 并查集—数组实现
  • 全局异常处理器为什么不能处理过滤器异常,有那些解决方案
  • FLEXOO的传感器技术:从材料选择到生产工艺的全方位创新
  • Windows零门槛部署DeepSeek大模型:Ollama+7B参数模型本地推理全攻略
  • 在Ubuntu上搭建Samba服务,实现与windows之间的文件共享
  • 蓝桥杯真题
  • hi3516cv610适配AIC8800D80的连接路由器记录
  • leetcode1 两数之和 哈希表
  • Spring(三)容器-注入
  • FreeRTOS列表和列表项
  • 审批流AntV框架蚂蚁数据可视化X6饼图(注释详尽)