mybatis association会出现覆盖记录 导致只返回最后一条记录

PJ85718DM与PIC18LF45K40温控方案:高精度数字传感+超低功耗MCU协同设计 数字温度传感器是嵌入式温控系统的核心感知单元,其精度、抗干扰性与接口确定性直接决定闭环控制可靠性;I²C接口温度芯片通过硬件校准和中断唤醒机制,显著提升本地响应速度并降低系统功耗。结合具备工业级温宽、硬件EUSART与可配置逻辑单元的8位MCU,可构建从物理测温→数字处理→远程上报的全链路可控架构。该方案特别适用于HVAC控制器、无线温感节点及工业环境监测等对长期稳定性、低功耗与实时安全响应有严苛要求的场景,有效规避NTC模拟链路温漂、DS18B20轮询延迟及Wi-Fi射频干扰等典型工程风险。 阅读详情

开始封装的返回类: 

package com.mpn.dto;

import com.mpn.model.TUser;

public class TUserDto {
	/*
	 * 角色
	 */
	private TUser tUser;
    /** 角色名称*/
    private String roleName;


	public String getRoleName() {
		return roleName;
	}

	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}

	public TUser gettUser() {
		return tUser;
	}

	public void settUser(TUser tUser) {
		this.tUser = tUser;
	}

    
}

mapper类:

<resultMap id="BaseResultMapRolename" type="com.mpn.dto.TUserDto">
		<result column="RoleName" property="roleName" jdbcType="VARCHAR" />
		<association property="tUser" javaType="com.mpn.model.TUser">
			<id column="UserId" property="userId" jdbcType="VARCHAR" />
			<result column="UserName" property="userName" jdbcType="VARCHAR" />
			<result column="UserPwd" property="userPwd" jdbcType="VARCHAR" />
			<result column="UserPhone" property="userPhone" jdbcType="VARCHAR" />
			<result column="UserWeChat" property="userWeChat" jdbcType="VARCHAR" />
			<result column="UserEmail" property="userEmail" jdbcType="VARCHAR" />
			<result column="UserRealName" property="userRealName" jdbcType="VARCHAR" />
			<result column="UserRold" property="userRold" jdbcType="VARCHAR" />
			<result column="UserIsEnabled" property="userIsEnabled" jdbcType="VARCHAR" />
			<result column="UserRemark" property="userRemark" jdbcType="VARCHAR" />
			<result column="UserCreateTime" property="userCreateTime"  javaType="java.sql.Date" jdbcType="DATE" />
			<result column="UserProvince" property="userProvince" jdbcType="VARCHAR" />
			<result column="UserCity" property="userCity" jdbcType="VARCHAR" />
			<result column="UserCounty" property="userCounty" jdbcType="VARCHAR" />
			<result column="UserTown" property="userTown" jdbcType="VARCHAR" />
			<result column="UserVillage" property="userVillage" jdbcType="VARCHAR" />
		</association>
	</resultMap>


<select id="searchByName" parameterType="com.mpn.model.TUser"  
 resultMap="BaseResultMapRolename">
		Select u.*,r.RoleName 
		From t_user u 
		Left Join t_role r On u.UserRold = r.RoleId
		Where u.UserIsEnabled = 1
		<if test="userName != null">
			and u.username like '%'#{userName,jdbcType=VARCHAR}'%'
		</if>
	</select>

以上代码导致的结果是查询出来的总是最后一条数据,类似后面数据覆盖了之前数据的现象。

发现问题的关键在于resultMap中如果不定义类似主键之类的能够区分每一条结果集的字段的话,会引起后面一条数据覆盖前面一条数据的现象。

最终将resultMap中添加id,并相应在bean中添加该字段,代码如下,问题解决。

package com.mpn.dto;

import com.mpn.model.TUser;

public class TUserDto {
	//防止覆盖添加 id
	private String userIds;
	/*
	 * 角色
	 */
	private TUser tUser;
    /** 角色名称*/
    private String roleName;


	public String getUserIds() {
		return userIds;
	}

	public void setUserIds(String userIds) {
		this.userIds = userIds;
	}

	public String getRoleName() {
		return roleName;
	}

	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}

	public TUser gettUser() {
		return tUser;
	}

	public void settUser(TUser tUser) {
		this.tUser = tUser;
	}

    
}
<resultMap id="BaseResultMapRolename" type="com.mpn.dto.TUserDto">
		<id column="UserId" property="userIds" jdbcType="VARCHAR" />
		<result column="RoleName" property="roleName" jdbcType="VARCHAR" />
		<association property="tUser" javaType="com.mpn.model.TUser">
			<id column="UserId" property="userId" jdbcType="VARCHAR" />
			<result column="UserName" property="userName" jdbcType="VARCHAR" />
			<result column="UserPwd" property="userPwd" jdbcType="VARCHAR" />
			<result column="UserPhone" property="userPhone" jdbcType="VARCHAR" />
			<result column="UserWeChat" property="userWeChat" jdbcType="VARCHAR" />
			<result column="UserEmail" property="userEmail" jdbcType="VARCHAR" />
			<result column="UserRealName" property="userRealName" jdbcType="VARCHAR" />
			<result column="UserRold" property="userRold" jdbcType="VARCHAR" />
			<result column="UserIsEnabled" property="userIsEnabled" jdbcType="VARCHAR" />
			<result column="UserRemark" property="userRemark" jdbcType="VARCHAR" />
			<result column="UserCreateTime" property="userCreateTime"  javaType="java.sql.Date" jdbcType="DATE" />
			<result column="UserProvince" property="userProvince" jdbcType="VARCHAR" />
			<result column="UserCity" property="userCity" jdbcType="VARCHAR" />
			<result column="UserCounty" property="userCounty" jdbcType="VARCHAR" />
			<result column="UserTown" property="userTown" jdbcType="VARCHAR" />
			<result column="UserVillage" property="userVillage" jdbcType="VARCHAR" />
		</association>
	</resultMap>


<select id="searchByName" parameterType="com.mpn.model.TUser" resultMap="BaseResultMapRolename">
		Select u.*,r.RoleName 
		From t_user u 
		Left Join t_role r On u.UserRold = r.RoleId
		Where u.UserIsEnabled = 1
		<if test="userName != null">
			and u.username like '%'#{userName,jdbcType=VARCHAR}'%'
		</if>
	</select>

 

Ansys Zemax | 公差分析中的补偿器优化:如何提升系统良率? 本文深入探讨了在Ansys Zemax公差分析中如何有效设置与优化补偿器以提升系统良率。文章指出,补偿器是连接理想设计与现实生产的关键,通过模拟实际装配中的调整(如后焦距),能显著改善公差分析的“悲观”预测。详细介绍了补偿器的添加方法、多补偿器策略、评价函数设计以及通过灵敏度分析和蒙特卡洛档案优化补偿效果,旨在帮助光学工程师制定更符合生产实际的公差策略,从而有效提升产品良率。 阅读详情

相关推荐

SDI-12协议与STM32 进行uart通信

其中DIR_OUT_SDI是一个IO引脚,控制UART_TX_SDI是否使能,U10是三态门IC,即拉低DIR_OUT_SDI使能stm32输出,拉高DIR_OUT_SDI失能输出,串口配置8位数据位,偶校验,1位停止位,1200波特率。示波器测试得到传感器的应答信号如下:第一个是唤醒信号,拉高电平13毫秒,之后保持20毫秒低电平,第二个数据帧是激活信号,即ascii码: "0!",第三个是传感器的应答信号:"0\r\n"

weixin_42186805的博客 4402

mybatis 关联查询 resultMap 同名冲突

在学mybatis写mapper映射文件时,在写到一对一关联时,由于两个javabean的属性相同,导致在select时外部属性覆盖了内部属性: SELECT c.id,c.name,teacher_id,t.id,t.name ,t.age FROM classes c,teacher t 这样子由于Class

CASER_HDMI的博客 3385

通过TMS320F28335学习DSP的开发流程——28335的基础知识(1)

1、TMS320F28335内核的主要特点 ①F28335 DSP集成了DSP和微控制器的长处,如DSP的主要特征、单周期乘法运算,F28335能够在一个周期内完成32x32位的乘法累加运算,或者两个16x16位乘法累加运算,而同样32位的普通单片机则需要4个周期以上才能完成 ②快速的中断响应 ③可在任何内存位置进行单周期读、修改、写操作 ④可采用C/C++编程软件,效率非常高 2、处理器的主要资源 ①32位浮点DSP,主频是150MHz,方便电机控制、电力设备控制及工业控制等。 ②片上存储器:FLASH–

Kayboy的博客 2万+

mybatis association会出现覆盖记录 导致只返回最后一条记录

在今天1024这个程序员节我先定一个题目得一个勋章,一会儿对应标题写一篇,先去恰个饭

咖喱辣椒 578

交通仿真软件:SUMO_(13).Python脚本与TraCI接口

通过TraCI接口,用户可以实现与SUMO仿真器的实时交互,获取和控制交通数据。本文档详细介绍了如何使用Python脚本与TraCI接口进行交互,包括基本的设置、数据获取和控制方法。此外,还展示了几个高级应用示例,如交通流优化、多代理系统、车辆路径规划和车辆行为模拟。这些示例可以帮助用户更好地理解如何利用TraCI接口进行复杂的交通仿真和分析。希望这些内容对您有所帮助,如果您有任何问题或需要进一步的帮助,请参考SUMO的官方文档或社区支持。

kkchenjj的博客 998

别把 ABAP 时间戳当数字算:TIMESTAMP / TIMESTAMPL 的语义、正确用法与项目级避坑指南

ABAP时间戳使用指南与常见陷阱 摘要:ABAP中的时间戳(TIMESTAMP/TIMESTAMPL)本质是UTC时间的数字表示,而非累计秒数。正确用法包括:直接比较时间戳顺序、使用CONVERT TIME STAMP进行时区转换、通过CL_ABAP_TSTMP计算时间差。关键注意事项:绝对不要对时间戳本身进行数学运算,否则会导致非法时间值。实际项目中需特别注意SAP Gateway的ETag处理、跨时区系统集成和CDS视图中的时间戳使用场景,避免将本地时间误存为UTC时间戳或在云迁移时产生时区问题。(14

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 344

MyBatis踩坑记录-多表关联字段相同,字段数据覆盖问题

MyBatis踩坑记录-多表关联字段相同,字段数据覆盖问题

慕迟的轻博客 796

IIC软件协议及硬件知识汇总

IIC软件协议及硬件相关知识,真的是非常齐全了!

记得诚 1万+

在使用Mybatis的association属性,两张表中存在相同字段名,联表查询时的冲突解决办法

在使用MyBatis进行多表联查时,想要获取关联外键的表的数据信息,使用association进行联查,但当外键表的字段名和主表相同时,外键表的数据就会被覆盖。

weixin_45932704的博客 3402

详解Agent Skills:让AI拥有更多专业能力(什么是Agent Skills?如何创建?如何使用?如何获取?)

本文分享如何将零散指令沉淀为可复用的 AI 能力模块🧩,介绍什么是Agent Skills?如何创建?如何获取?📚

XiaoqiangClub的博客 1270

MIKE水动力笔记2_水动力基础理论知识

本文所讲内容是水动力基础理论知识,所参考的主要书籍是《水动力学和水质》(第二版,季振刚著,海洋出版社)。

晏长街的博客 1万+

Mybatis多表关联查询字段值覆盖问题解决

如下xml映射文件所示,数据库联查时两边有列名相同 <resultMap id="bai" type="com.boot.model.entity.ActReDelegateRule"> <id column="id" property="id" /> <result column="assignee" property="assignee" /> <result column="dele_scope" propert

qq_41136963的博客 1491

【LDPC-7】LLR量化位宽对LDPC译码性能的影响分析——以最小和译码算法为例进行matlab仿真

最小和译码算法的步骤如下:最后译码结果如果满足或者完成所有迭代次数,则译码算法停止迭代,否则继续进行译码迭代操作。

FPGA/MATLAB学习教程/源码/项目合作开发 1471

mybatis的association查询多条记录,只返回最后一条

在对Apply和Student进行连表查询时发现association查询多条记录,只返回最后一条,CompanyBoxExt是作为Apply的扩展类 解决方法: 参考链接:https://blog.youkuaiyun.com/qq_41541619/article/details/80556988 resultMap中如果不定义类似主键之类的能够区分每一条结果集的字段的话,会引起后面一条数据覆盖前面...

csdnApril的博客 1133

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Mybaits的association关联只能返回一条记录问题

场景:一个用户可以写多篇文章,先查用户再查文章,属于一对多关联。 问题:使用association便签在user下面关联article,多篇文章只能返回一个。 User实体 public class User { private int id; private String name; private int age; private Article article; //...

lxl110801311的博客 1515

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mybatis association 关联查询只返回一条记录

如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条。 造成以上情况可能的原因:   1、级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的。但在mybatis中主从表需要为相同字段名设置别名。设置了别名就OK了。 例子: 主表Standard, 从表StandEntity,均有名为id的字段 1 <result...

weixin_33721344的博客 683

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

mybatis 关联查询时,从表只返回第一条记录解决办法

如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条。 造成以上情况可能的原因:   1、级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的。但在mybatis中主从表需要为相同字段名设置别名。设置了别名就OK了。 例...

WGH100817的博客 581

mysql 只返回第一条_mybatis 关联查询时,从表只返回第一条记录解决办法

如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条。造成以上情况可能的原因:1、级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的。但在mybatis中主从表需要为相同字段名设置别名。设置了别名就OK了。例子:主表Standard, 从表StandEntity,均有名为id的字段1 2 3 (依据下面的select中更名的字段id别名...

weixin_39639518的博客 3284

MyBatis(七) 解决resultMap只返回一条结果的问题

问题描述 在使用resultMap进行两表的关联关系映射的时候,本应返回list类型的数据,但是却只返回了一条数据,出现了后面的数据覆盖前面的数据的现象。 表之间的关联关系 sql语句 这样写后,就只能返回一条数据,出现错误的原因是:resultMap中如果不定义类似主键之类的能够区分每一条结果集的字段的话,会引起后面一条数据覆盖前面一条数据的现象。...

新新许愿树 9139

mybatis 关联查询时,从表只返回第一条记录解决办法

如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条。   造成以上情况可能的原因:   1、级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的。但在mybatis中主从表需要为相同字段名设置别名。设置了别名就OK了。 例子: 主表Standard, 从表StandEntity,均有名为id的字段 1

Tlsy的博客 1万+

MyBatis

半自动化ORM框架

2404_88294688的博客 1744

mybatis中resultMap丢失查询结果,association“错误”去除重复数据的问题

  &lt;resultMap id="commissionRec" type="CommissionRec" &gt;         &lt;result property="sourceName" column="cmr_sourceName"/&gt;         &lt;result property="totalMoney" column="c

goodyuedandan的博客 1496

关于MyBatis中查询到多条结果,但是封装到List集合中只有一条或者少了的情况

原因是: 1、 在存在标签时,必须指定一个不会重复的列充当唯一标识,否则MyBtis会认为所有的数据都一样,只存第一条,并且会将最后一条数据中的中的数据覆盖到第一条中,可能存在数据错乱;没有标签时,Mybatis会默认比较所有的与同级别的列,如果全部一样,则认为是同一数据,不会添加到集合中。 2、 存在标签时:https://blog.youkuaiyun.com/u013862444/article/det...

yifan__zhang的博客 4562

Mybatis关联(嵌套)查询与延迟加载

我们在查询业务数据的时候经常会遇到关联查询的情况,比如查询员工就会关联部门(一对一),查询学生成绩就会关联课程(一对一),查询订单就会关联商品(一对多),等等。映射结果有两个标签,一个是,一个是。是select标签的一个属性,适用于返回JDK类型(比如Integer.String等等)和实体类。这种情况下结果集的列和实体类的属性可以直接映射。如果返回的字段无法直接映射,就要用来建立映射关系。对于关联查询的这种情况,通常不能用来映射。......

想着百万年薪努力的小赵 1万+

MyBatis多表关联查询实战:从resultMap原理到分页性能优化

在关系型数据库应用开发中,对象关系映射(ORM)是连接面向对象编程与数据库表结构的关键技术。其核心原理在于将数据库中的关联关系(如一对一、一对多、多对多)映射为程序中的对象引用或集合,从而简化数据操作并提升开发效率。MyBatis作为一款优秀的半自动ORM框架,通过灵活的SQL编写与强大的结果集映射能力,在实现复杂业务逻辑时展现出极高的技术价值。它尤其擅长处理多表关联查询场景,例如电商系统中的用户与订单、内容平台的文章与评论等数据模型。本文聚焦于MyBatis的resultMap机制,深入解析其如何通过as

axfcjwkbi259888707的博客 347

MyBatis多表查询实战:从一对一、一对多到多对多关系映射详解

在关系型数据库应用开发中,多表关联查询是处理复杂业务逻辑的核心技术之一。其基本原理是通过SQL的JOIN操作,将分散在不同表中的数据根据关联关系进行连接,从而在一次查询中获取完整的业务视图。这项技术的核心价值在于,它能够有效减少数据库访问次数,提升数据检索效率,并保证数据的一致性。在实际应用场景中,无论是电商平台的订单与用户信息关联,还是企业管理系统中的部门与员工数据整合,都离不开高效的多表查询。MyBatis作为Java领域广泛使用的持久层框架,通过其强大的ResultMap配置,特别是associati

weixin_33738982的博客 364
上一篇: js动态省市县乡村的联动详细介绍支持默选
下一篇: mybatis+pagehelper like搜索报错 因为%%
ArchitectDream
博客等级 码龄9年 48粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值