ibatis出现AutoResultMap错误的问题

通义千问AI模型对接飞书机器人-集成飞书机器人(2-2) http请求地址上一篇百炼平台配置的应用地址。 阅读详情

为了能够让ibatis动态执行传入的sql,我只在ibstis配置文件里配置了一个查询语句,配置如下:

<select id="queryObjectForSql" resultClass="java.util.HashMap"  
  parameterClass="java.lang.String">
  $sql$

 </select>

传入SQL:

select substr(t.form_id,2) as ACTIVITYID from swfformtablemgr t where t.form_id like 'F'||'50012%'

这莫名其妙出现如下错误:

com.ibatis.common.jdbc.exception.NestedSQLException:  
--- The error occurred in com/sitech/ismp/prealarm/maps/sendPreAlarm.xml. 
--- The error occurred while applying a result map. 
--- Check the queryObjectForSql-AutoResultMap. 
--- Check the result mapping for the 'PROCESSID' property. 
--- Cause: java.sql.SQLException: 列名无效
 at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:201)
 at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForList(MappedStatement.java:139)
 at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:567)
 at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:541)
 at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
 at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:94)
 at com.sitech.ismp.prealarm.dao.impl.SendPreAlarmDaoImpl.queryObjectForSql(SendPreAlarmDaoImpl.java:34)
 at com.sitech.ismp.prealarm.service.impl.SendPreAlarmServiceImpl.queryObjectForSql(SendPreAlarmServiceImpl.java:27)
 at com.sitech.ismp.prealarm.util.ScanedTaskAndSendPreAlarm.SendPreAlarm(ScanedTaskAndSendPreAlarm.java:51)

查找半天无果,将sql直接放到数据库执行没有任何错误,执行的sql中并没有PROCESSID字段,为何会报列明无效错误,极度郁闷快哭了。。。

后来才知道由于sql是动态传入的,每次执行的语句可能会不同,查询的结果也会不同,而ibatis为了避免经常的对返回的结果进行内省,ibatis会记录上一次查询结果的元数据, ibatis 会在每次查询的时候内省查询结果来设置元数据,来保证返回恰当的结果。在 【statement】, 【select】, 和【procedure】 标签中存在一个可选的属性【remapResults 】,默认值是false.如果每次查询的列不定的话,这个属性需要设置为true.

更在:

<select id="queryObjectForSql" resultClass="java.util.HashMap" remapResults="true"
  parameterClass="java.lang.String">
  $sql$

 </select>

OK,问题解决。不过remapResults 属性会造成一定的性能损失,所以要谨慎使用,只在你需要的时候使用--查询列发生变化时

VC中sqlite的使用 在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示 立即下载

相关推荐

伺服驱动器启用后对传感器线信号干扰的解决方案

在一些Arduino项目中,研究者发现,当伺服电机启动时,传感器信号会出现显著噪声。例如,在一个假肢项目中,研究者使用光电隔离器成功隔离了伺服驱动器对EMG传感器的干扰。然而,当启用伺服驱动器时,传感器线信号常常受到干扰,导致系统性能下降。传感器线信号是传感器输出的电信号,用于测量物理量,如温度、光线或位置。例如,在一些案例中,伺服驱动器的开关操作可能导致传感器信号出现尖峰或波动,特别是在模拟传感器上更为明显。描述: 使用光电隔离或其他隔离技术,分离伺服驱动器和传感器的电气路径,防止直接干扰。

有用好玩有趣的“电”知识 1466

优化MyBatisPlus的autoResultMap生成策略

前言 使用MyBatis-Plus的字段类型处理器,只需一个注解,就可以很方便的将数组、对象等数据直接映射到实体类中。 @Data @Accessors(chain = true) @TableName(autoResultMap = true) public class User { private Long id; ... /** * 注意!! 必须开启映射注解 * * @TableName(autoResultMap = true)

118路司机的博客 1万+

鱼眼双目测距实战:从OpenCV标定到SGBM匹配的完整流程解析

本文详细解析了鱼眼双目测距的完整流程,从OpenCV标定到SGBM匹配,涵盖标定、校正、匹配和测距四个关键阶段。通过实战经验分享,帮助开发者解决鱼眼镜头强畸变带来的测距挑战,提升测距精度至5%以内。特别适合机器人导航、自动驾驶和VR领域的开发者参考。

weixin_27298377的博客 124

【MP-BUG】记录一次工作开发遇到的Mybatis-PLUS@TableName注解autoResultMap引起的BUG

发现也能够正常映射。但是当我们在@TableName加上autoResultMap = true属性的时候,MP在进行映射的时候,找的就不是实体类属性本身了,而是去先找@TableField 找到了这个注解里面的value,有值的话就会去通过这上面的value进行映射。后面发现对于autoResultMap这个属性,MP针对getById这个方法都做了优化,有这个属性的时候是select * 没这个熟悉是调用select 字段吗 AS 重命名。=== 再分割一下====================

a347683395的博客 4687

手把手教你用6轴IMU跑通LIO-SAM:参数配置与代码修改保姆级教程

本文提供了一套完整的6轴IMU适配LIO-SAM的解决方案,包括参数配置与代码修改的详细步骤。从理解6轴与9轴IMU的关键差异入手,逐步指导如何调整核心配置文件params.yaml、重构utility.h关键函数、优化mapOptimization.cpp的位姿融合逻辑,并给出编译验证与性能调优建议,帮助开发者快速实现6轴IMU在LIO-SAM中的稳定运行。

weixin_28717807的博客 357

IGBT基础知识

IGBT

u010783226的专栏 1万+

mysql与mybatis-plus有关autoResultMap的事儿

遇到的问题: 一开始是这样写的,images和appendixes在数据库中都是blob类型,想要通过重写set方法来获取正确的值,但是问题是中文会乱码,很奇怪。。。 @Data @Builder @TableName(value = "task_comment", autoResultMap = true) public class TaskComment implements Serializable { /** * ID */ @TableId(value =

flyingmylife的博客 6458

基于STM32单片机设计的红外测温仪(带人脸检测)_34

当前设计的这款红外非接触式测温仪由测温硬件+上位机软件组合而成,主要用在地铁、车站入口等地方,可以准确识别人脸进行测温,如果有人温度超标会进行语音提示并且保存当前人脸照片。

8770

autoResultMap = true 作用, @TableName(value = ““, autoResultMap = true)

使得 MyBatis-Plus 能够根据实体类的字段与数据库表的列自动生成映射关系,简化了映射配置,并减少了手动编写ResultMap的工作量,适用于大多数简单或标准化的映射场景。

还在活水泥的未来包工头 2748

ASP.NET Core 6 Web API在IIS上的部署与调试

通过以上步骤和配置,你应该能够成功部署并调试你的ASP.NET Core 6 Web API在IIS上。记住,权限和配置是关键,确保你的环境和应用程序代码都正确设置。希望这篇博客对你部署和解决IIS上的问题有所帮助。

m0_74337424的博客 522

A2A 协议详解:Agent Card 的设计与实现

Agent Card 是 Agent2Agent (A2A) 协议中实现智能体发现与互操作性的核心组件。本文将深入剖析 Agent Card 的设计理念、关键字段及其在智能体生态系统中的作用。我们将通过详细的 JSON Schema 解析和 Python SDK 示例,帮助您理解如何精确地定义和发布智能体能力,为构建可发现、可协作的 AI 智能体奠定基础。当您使用a2a.Agent类初始化一个智能体时,SDK 会根据您提供的参数(nameversion等)自动构建内部的 Agent Card 表示。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1476

关于ibatis出现AutoResultMap错误的问题

在ibatis中有时需要动态传入字段进行查询,例如使用$columnName$,返回resultClass没有指定定义的时,   比如返回java基本类型 java.lang.String、、这时ibatis就会使用AutoResultMap来进行结果集映射   如果传入的字段,前后查询字段个数,别名不一致时,比如 1第一次查询select id from xx, 第二次查询se

he702170585的专栏 1694

【Qt开发】管理OpenGL上下文QOpenGLContext类及应用实践示例代码

QOpenGLContext 提供了一个简单、高效的接口来管理 OpenGL 上下文。本文详细介绍了 QOpenGLContext 的基本功能、常用方法、信号槽机制、高级应用技巧及常见问题的解决方法。通过这些介绍,读者可以更好地掌握和利用 QOpenGLContext 进行 OpenGL 渲染和管理实验。对于有特殊需求的开发者,也可以通过探索更多高级设置和优化策略,以满足具体的应用场景。

科技改变人类,技术成就未来 1873

AutoResultMap的问题

近日开发中用到ibatis在使用的过程中出现了AutoResultMap的错误: [问题描述]  如下面SQL,因为类似的表有一百多个,不想对每一个表都写SQL,就把要检索的字段定义               到了另外一个表T_COLUM表中,然后从T_COLUM表中取出字段,表名,拼凑出下面的               SQL,FnValueBean是一个公用的Bean,对于

bigspring1984的专栏 2253

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

iBatis的AutoResultMap 默认配置使用时候出现的问题

输入您的搜索字词 提交搜索表单 google_ad_client = "pub-5033576919944123";google_ad_width = 728;google_ad_heig

tgystc 1571

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ibatis中动态查询时缓存问题引起的错误解决办法

地址:http://www.iteye.com/topic/1066187 使用ibatis的时候,动态的生成列如果使用AutoResultMap会出现问题,ibatis 自身也有缓存,会和上次的cache比较,就要报java.sql.SQLException: Invalid column name错误;因为iBatis自己有 AutoResultMap的cache。  解决办法:

可来堂 2366

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ibatis 数据库获取不到 java_ibatis 中使用select 查询 数据库中存在查询项是null 是报错...

在使用ibatis 进行查询数据库是报错错误如下:查询失败--- The error occurred in com/sqlmap/person.xml.--- The error occurred while applying a result map.--- Check the lisper-AutoResultMap.--- The error happened while setting ...

weixin_29767773的博客 331

iBatis的AutoResultMap 默认配置使用时候出现的问题(转)

演示的sqlMap 配置文件,通过'$'和'*'的使用,达到动态映射Table到一个map的作用 [code="java"] < select id ="useAutoResultMapExample" parameterClass ="map" > USE $dbName$ SELECT* FROM $tableName$ [/c...

WJPIAO的专栏 268

Ibatis缓存select字段名引起的问题

开发中遇到一个问题,网上有人描述问题,但是没有找到答案,自己看了ibatis源码才明白过来执行SQL:SELECT count( distinct o.id) FROM et_orders o tickets ticket .................这里省略 抛出如下异常:com.ta

黄刚的专栏 3594

ibatis诡异的错误

错误如下:   com.ibatis.common.jdbc.exception.NestedSQLException:    --- The error occurred in config/CTS_CHECK_TICKET_ET.xml.   --- The error occurred while applying a parameter map.   --- Check th...

asgab的专栏 261

ibatis select 缓存问题

使用ibatis的时候,动态的生成列如果使用AutoResultMap会出现问题,ibatis 自身也有缓存,会和上次的cache比较,就要报java.sql.SQLException: Invalid column name错误;因为iBatis自己有 AutoResultMap的cache。  解决办法: 使用多个statment或者使用 remapResults=”true” (为了效率他...

iteye_18722的博客 115
上一篇: Shell字符串截取
下一篇: AIX/Unix/Linux/HP-UX 系统中文字符集
vargs
博客等级 码龄17年 2粉丝 3原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值