首页 > 其他分享 >resultMap 和 resultType 的字段映射覆盖问题

resultMap 和 resultType 的字段映射覆盖问题

时间:2024-03-15 15:48:04浏览次数:22  
标签:覆盖 映射 t2 resultMap t1 resultType id

在MyBatis中,如果你使用resultType而不是resultMap,并且结果集中有同名字段,则默认情况下后出现的字段值会覆盖前面的字段值。这是因为MyBatis在将结果集映射到Java对象时,是按照字段名称一一对应进行赋值的。
但若你希望更精确地控制映射关系,并且避免自动覆盖行为,则可以用resultMap来显式指定每个字段应该映射到哪个属性上,它在遇到同名字段时不会进行覆盖,尤其是当涉及到多表查询时。
例如,如果有两个表中的字段名相同,你可以分别为它们起不同的别名:

<select id="selectExample" resultMap="combinedResult">
    SELECT 
        t1.id as t1_id,
        t2.id as t2_id,
        ...
    FROM table1 t1
    LEFT JOIN table2 t2 ON t1.id = t2.t1_id
</select>

<resultMap id="combinedResult" type="YourJavaType">
    <id property="idFromTable1" column="t1_id"/>
    <!-- 其他来自table1的字段 -->
    <id property="idFromTable2" column="t2_id"/>
    <!-- 其他来自table2的字段 -->
</resultMap>

这样通过column属性指定了数据库中的字段别名与Java实体类中属性的对应关系,即使字段名相同,也能确保正确映射到不同属性上而不会被覆盖。

标签:覆盖,映射,t2,resultMap,t1,resultType,id
From: https://www.cnblogs.com/emanjusaka/p/18075562

相关文章

  • 记录报错内容以及如何修改(mapper包下面的映射文件扫描不到)
    这个错误是在使用mybatis和mapper的时候发生的,一般报这种错误都是因为配置不匹配,或者是写错了路径,或者是写的sql语句有了问题,但是我检查了很多遍都没有发现任何有关语句和路径的错误。 排除了这些低级错误的可能后,这里会报错的原因也基本就只有一个了,那就是mapper接口和mapper.......
  • 【CentOS】Linux 或 Windows 上实现端口映射
    一、什么端口映射?端口映射:端口映射就是将内网中的主机的一个端口映射到外网主机的一个端口,提供相应的服务。当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。我们在内网中有一台Web服务器,但是外网中的用户是没有办法直接访问该服务器的。于是我们可......
  • 算法面试通关40讲 - 哈希表/映射
    1.两数之和#include<iostream>#include<unordered_map>usingnamespacestd;classSolution{public:vector<int>twoSum(vector<int>&nums,inttarget){vector<int>indices;unordered_map<int,decltype(nums.siz......
  • 三、MyBatis基础配置之映射文件Mapper.xml(均为单表查询示例)
    一)动态if需求:多条件组合查询。  二)动态foreach需求:多值查询。  三)动态抽取......
  • 多重映射
    题目:AtCoderBeginnerContest342_C链接:https://atcoder.jp/contests/abc342题意:给出一串字符串S,字符串仅由小写字母组成,有m次操作,第mi次操作的意思为将字符串S中所有出现的字符C转化为字符D,m次操作完成后输出最终字符串。思路:本题是一道非常标准的字符多重映射问题,仅需要用......
  • 映射本地图片
    importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;importorg.springframework.web.servlet.config.annotation.WebMvcConfigurer;/***映射本地图片类,找到url对应的文件,配置Spr......
  • Mybatis20_MyBatis映射文件深入(动态SQL)6
    一、动态sql语句1、动态sql语句概述Mybatis的映射文件中,前面我们的SQL都是比较简单的,有些时候业务逻辑复杂时,我们的SQL是动态变化的,此时在前面的学习中我们的SQL就不能满足要求了。2、环境搭建UserMapper.javapackagecom.itheima.mapper;importcom.......
  • 本地快速搭建airflow docker镜像,映射本地路径
    airflow官方文档拉取镜像dockerpullapache/airflow:2.8.2拉取配置文件curl-LfO'https://airflow.apache.org/docs/apache-airflow/2.8.2/docker-compose.yaml'修改刚刚拉取的yaml文件关闭示例dagAIRFLOW__CORE__LOAD_EXAMPLES:'false'映射本地路径volumes:......
  • docker-部署mysql8,并映射数据目录和日志目录
    下载镜像dockerpullmysql:8.0.21在主机上准备目录mkdir-p/mysql8/data/mysql8/log  /mysql8/cnf编写配置文件[root@localhostcnf]#catmy.cnf[mysqld]datadir=/mysql/datalog-error=/mysql/log/mysql-log.logpid-file=/mysql/mysqld/mysqld.pids......
  • 在Windows操作系统上进行端口映射通常需要使用网络地址转换(NAT)规则或端口转发来实现。
    端口映射通常与目的网络地址转换(DNAT)概念相关联。在网络中,DNAT是一种技术,用于将传入的数据包的目的IP地址和/或端口号修改为内部网络中另一台计算机的IP地址和端口号。这样可以实现将外部流量导向内部特定计算机或服务的功能。因此,端口映射通常涉及DNAT技术,用于在网络中重......