ibatis中动态查询表返回用resultClass="java.util.HashMap" 的问题

Arnold Denoise流程 参考:https://support.solidangle.com/display/ARP/Removing+Noise+Workflow Arnold生来不是一个以单帧渲染速度见长的渲染器,但这并不能作为一个简单场景渲染时间长达几个小时的借口。 个人认为高品质生产级渲染结果中,Unbiased renderer在渲染时最耗计算时间的其实就是降噪,以至于降噪专门成了一门灯光师必备的技术 阅读详情

ibatis中动态查询表返回用resultClass="java.util.HashMap" 的问题

标签: ibatisnulllistiteratorobjecthashmap
  10407人阅读  评论(0)  收藏  举报
  分类:

目录(?)[+]

 

ibatis中动态查询表返回用resultClass="java.util.HashMap" 的问题

悬赏:5 发布时间:2008-07-29 提问人:樊宝最帅 (初级程序员)
用spring+ibatis写了一个登陆页面输入表名 然后在页面查询出表的数据, 

sql配置文件 
</select> 
<select id="getTableDataByPage" resultClass="java.util.HashMap" parameterClass="java.util.HashMap"> 
<![CDATA[ 
select * from (select rownum id,t.* from 
$tableName$ t where rownum<= #endNum# ) b where b.id>= #startNum# 
]]> 
</select> 

第一次运行服务器输入一个表名可以查询出表的所有信息,退出返回到登陆页面重新输入一个表名查询就会出错 
日志显示: 
Cause: java.sql.SQLException: 列名无效 
com.ibatis.common.jdbc.exception.NestedSQLException: 
--- The error occurred in com/zf/querytest/bo/impl/tableDao.xml. 
--- The error occurred while applying a result map. 
--- Check the tableDao.getTableDataByPage-AutoResultMap. 
--- Check the result mapping for the 'TASKID' property. 

其中TASKID为上一张表中的字段,也就是ResultMap中保留了上个表的字段信息,将sqlMapClient中的cacheModelsEnabled设置为"false"也不行 
请问我要怎样修改才能在重新输入表名后查询后返回新的表的结果了,请大家帮帮忙,谢谢 
问题补充:
感谢lggege的关注,目前只能重新启动才能重新查询另一张表的数据

采纳的答案

2008-08-05 hetylei (初级程序员)

Java代码 
  1. </select>   
  2. <select id="getTableDataByPage" resultClass="java.util.HashMap" parameterClass="java.util.HashMap" remapResults="true">   
  3. <![CDATA[   
  4. select * from (select rownum id,t.* from   
  5. $tableName$ t where rownum<= #endNum# ) b where b.id>= #startNum#   
  6. ]]>   
  7. </select>   

提问者对于答案的评价:
好的 经测试解决了,原来有remapResults这个属性,谢谢你的帮助

其他回答

这是我的测试代码: 
Xml代码 
  1. <select id="getTableData" resultClass="java.util.HashMap" parameterClass="java.lang.String">   
  2.     <![CDATA[  
  3.     SELECT * FROM $tableName$ 
  4.     ]]>   
  5.    </select>   


Java代码 
  1. public Map<String, Object> getTableData(String tableName) {  
  2.     return this.getSqlMapClientTemplate().queryForMap("getTableData", tableName, "tableName");  
  3. }  


Java代码 
  1. public void testGetTableData() {  
  2.     Map<String, Object> values1 = this.articleDao.getTableData("one");  
  3.     assertNotNull(values1);  
  4.       
  5.     Map<String, Object> values2 = this.articleDao.getTableData("two");  
  6.     assertNotNull(values2);  
  7. }  


运行期间的SQL: 
Java代码 
  1. Executing Statement:         SELECT * FROM one  
  2. Parameters: []>  
  3. Types: []>  
  4. ResultSet>  
  5. Header: [id, name]>  
  6. Result: [1, z]>  
  7.   
  8. Executing Statement:         SELECT * FROM two         >  
  9. ...  
  10. Header: [id, name]>  
  11. Result: [2, zz]>  


数据库表结构: 
Sql代码 
  1. mysql> desc one;  
  2. +-------+-------------+------+-----+---------+-------+  
  3. | Field | Type        | Null | Key | Default | Extra |  
  4. +-------+-------------+------+-----+---------+-------+  
  5. | id    | int(20)     | YES  |     | NULL    |       |  
  6. | name  | varchar(20) | YES  |     | NULL    |       |  
  7. +-------+-------------+------+-----+---------+-------+  
  8. 2 rows in set (0.02 sec)  
  9.   
  10. mysql> desc two;  
  11. +-------+-------------+------+-----+---------+-------+  
  12. | Field | Type        | Null | Key | Default | Extra |  
  13. +-------+-------------+------+-----+---------+-------+  
  14. | id    | int(20)     | YES  |     | NULL    |       |  
  15. | name  | varchar(20) | YES  |     | NULL    |       |  
  16. +-------+-------------+------+-----+---------+-------+  
  17. 2 rows in set (0.00 sec)  
lggege (架构师) 2008-07-30  举报作弊
所以, 我的测试, 不会发生第二次查询结果Map 会是前一次查询的.
lggege (架构师) 2008-07-30  举报作弊
可能是因为 我的表one和表two 的schema是一样的, 我改下再测试.
lggege (架构师) 2008-07-30  举报作弊
Sql代码 
  1. mysql> desc one;  
  2. +---------+-------------+------+-----+---------+-------+  
  3. | Field   | Type        | Null | Key | Default | Extra |  
  4. +---------+-------------+------+-----+---------+-------+  
  5. | id      | int(20)     | YES  |     | NULL    |       |  
  6. | name    | varchar(20) | YES  |     | NULL    |       |  
  7. | remarks | varchar(20) | YES  |     | NULL    |       |  
  8. +---------+-------------+------+-----+---------+-------+  
  9. 3 rows in set (0.00 sec)  
  10.   
  11. mysql> desc two;  
  12. +-------+-------------+------+-----+---------+-------+  
  13. | Field | Type        | Null | Key | Default | Extra |  
  14. +-------+-------------+------+-----+---------+-------+  
  15. | id    | int(20)     | YES  |     | NULL    |       |  
  16. | name  | varchar(20) | YES  |     | NULL    |       |  
  17. +-------+-------------+------+-----+---------+-------+  
  18. 2 rows in set (0.01 sec)  



Java代码 
  1. org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:     
  2. --- The error occurred in cn/iwoo/demo/dao/maps/Article.xml.    
  3. --- The error occurred while applying a result map.    
  4. --- Check the getTableData-AutoResultMap.    
  5. --- Check the result mapping for the 'remarks' property.    
  6. --- Cause: java.sql.SQLException: Column 'remarks' not found.  

确实发生了这个问题, 这是在第二个查询时抛出的异常..

1.Map作为parameterClass

映射文件:

[xml]  view plain  copy
 print ?
  1. <!--use Map type as parameterClass-->  
  2.         <select id="getProduct-Map" parameterClass="java.util.Map" resultMap="get-product-result">  
  3.             <![CDATA[ 
  4.                 select * from t_product 
  5.                 where prd_id=#id# and prd_description=#description# 
  6.             ]]>  
  7.         </select>  

?DAO层:

[java]  view plain  copy
 print ?
  1. /** 
  2.      * java.util.Map作为parameterClass 
  3.      */  
  4.     public Product getProductMap(Map map) throws SQLException {  
  5.         init();  
  6.         Product product = (Product)sqlMapClient.queryForObject("getProduct-Map", map);  
  7.         return product;  
  8.     }  

?Test类:

[java]  view plain  copy
 print ?
  1. public void getProductMap() throws SQLException{  
  2.         Map map = new HashMap();  
  3.         map.put("id", new Integer(1));  
  4.         map.put("description", "basketball");  
  5.         Product product = productDao.getProductMap(map);  
  6.         System.out.println(product);  
  7.     }  

?结果:

id:1
description:basketball
price206.99

?

?

2.Map作为resultClass

映射文件:

[xml]  view plain  copy
 print ?
  1. <resultMap id="get-product-map" class="<a name="baidusnap1"></a><strong>java.util.HashMap</strong>">  
  2.             <result property="id" column="prd_id"/>  
  3.             <result property="description" column="prd_description"/>  
  4.             <result property="price" column="prd_price"/>  
  5.         </resultMap>  
  6.   
  7. <!--START  use Map type as <strong>resultClass</strong>,MUST use <strong>java.util.HashMap</strong> instead java.util.Map-->  
  8.         <select id="getProdcut-MapResult" <strong>resultClass</strong>="<span><strong>java.util.HashMap</strong></span>  
  9. ">  
  10.             <![CDATA[ 
  11.                 select * from t_product 
  12.             ]]>  
  13.         </select>  
  14.           
  15.         <select id="getProductUseMap-resultMap" resultMap="get-product-map">  
  16.             <![CDATA[ 
  17.                 select * from t_product 
  18.             ]]>  
  19.         </select>  
  20.         <!-- END  -->  

?DAO层:

[java]  view plain  copy
 print ?
  1. /** 
  2.      * java.util.Map作为<strong>resultClass</strong> 
  3.      */  
  4.     public List getProductMapResult() throws SQLException {  
  5.         init();  
  6.         List list = sqlMapClient.queryForList("getProdcut-MapResult");  
  7.         return list;  
  8.           
  9.     }  
  10.   
  11.   
  12.     public List getProductUseMapByResultMap() throws SQLException {  
  13.         init();  
  14.         List list = sqlMapClient.queryForList("getProductUseMap-resultMap");  
  15.         return list;  
  16.     }  

?Test类:

[java]  view plain  copy
 print ?
  1. public void getProductMapResult() throws SQLException{  
  2.         Map map = null;  
  3.         List list = productDao.getProductMapResult();  
  4.         for(Iterator it=list.iterator(); it.hasNext();) {  
  5.             //List里存放的是java.util.Map类型  
  6.             Object obj = (Object)it.next();  
  7.             System.out.println(obj.getClass());  
  8.             System.out.println(obj);  
  9.         }  
  10.     }  
  11.       
  12.     public void getProductUseMapByResultMap() throws SQLException {  
  13.         Map map = null;  
  14.         List list = productDao.getProductUseMapByResultMap();  
  15.         for(Iterator it=list.iterator(); it.hasNext();) {  
  16.             //List里存放的是java.util.Map类型  
  17.             Object obj = (Object)it.next();  
  18.             System.out.println(obj.getClass());  
  19.             System.out.println(obj);  
  20.         }  
  21.     }  
?

结果:

class java.util.HashMap 
{prd_id=1, prd_price=206.99, prd_description=basketball}
class java.util.HashMap
{prd_id=2, prd_price=106.99, prd_description=football}
class java.util.HashMap
{price=206.99, description=basketball, id=1}
class java.util.HashMap
{price=106.99, description=football, id=2}

?

?

注意: Map作为resultClass时,必须指定具体的实现类,比如java.util.HashMap,否则会报错

Caused by: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate result class.? Cause: java.lang.InstantiationException: java.util.Map

15、远程操作水下航行器(ROV)的非线性控制系统设计 本文探讨了远程操作水下航行器(ROV)的非线性控制系统设计,重点介绍了多变量PID控制、改进的PD控制和滑模控制三种方法。详细阐述了各控制策略的原理、建模与仿真过程,并通过对比分析其在稳态误差、振荡、抖振及跟踪效果等方面的性能表现。文章还提出了针对不同控制方法的优化建议,并给出了选择合适控制策略的决策流程,为ROV高精度运动控制提供了系统性解决方案。 阅读详情

相关推荐

【联邦学习】联邦平均(FedAvg)_附pytorch代码实现

其他代码包括1)数据集划分;2)训练;3)保存结果;4)绘图都可在 https://github.com/kt4ngw/fedavg-pytorch 找到。如果您对文章有建议及指定,也欢迎您留言评论,作者定当虚心修正。

kt4ngw的博客 5112

ibatis在动态列查询时,出现列名无效错误(使用remapResults属性)

ibatis在动态列查询时,出现列名无效错误(使用remapResults属性) 当SQL语句是查询的数据项列是动态的,需要使用remapResults属性,并将其设置为true。 出现错误如下: com.ibatis.common.jdbc.exception.NestedSQLException: — The error occurred in com/ictehi/grainplat/sqlMap/sainout.xml. — The error occurred while applying a r

codesweetpotato的博客 1219

Hypack 应用于地形测量的高级设置操作要领

Hypack 是业界公认最好的水文导航测量软件,是目前世界上应用广泛的专业测量疏浚软件。它能够接收,处理,存储和输出各种数据。Hypack支持绝大部分GPS,测深仪(国内如海鹰HY1603单波束测沙仪),多波束测深仪,旁扫声纳,涌浪补偿器,水位仪,验潮仪以及声速剖面仪。利用 Hypack 可以进行导航,单波束测量,多波束测量,旁扫测量以及疏浚实时监测等。软件界面友好,使用方便。本文简要阐述Hypack 应用于地形测量的几个重要操作要领。

中游鱼的博客 2799

ibatis使用报错:Check the result mapping for the ‘xxx‘ property,quoted string not properly terminated

在使用ibatis的时候报这个错误,挺常见,一般我们就会去检查SQL查询的字段和resultMap是否对应。 可是这次经过我仔细的检查之后,发现写的都是对的。只好采用排除法来检查错误。 首先把报错的字段、属性在SQL和resultMap中分别去掉,去掉之后呢,依旧报错,但是报错信息变了——check the paramter mapping for the ‘xxx’ property。 这次变成了入参错误,但是我其他几个方法也用到了相同的参数啊,并没有报错。所以这次去掉筛选条件,没有入参,只有一段干

FlyToMyHeart的博客 3882

【Unity】YooAsset与HybridCLR:高效资源管理与代码热更的黄金组合

本文深入探讨了Unity开发中YooAsset与HybridCLR的组合应用,为需要长期运营的项目提供了完整的资源与代码热更新解决方案。YooAsset作为高效的资源管理框架,简化了AssetBundle的打包、加载与热更流程;而HybridCLR则攻克了IL2CPP模式下C#代码无法热更的难题。两者结合,实现了从资源到逻辑的平滑在线更新,极大提升了开发迭代与线上维护的效率。

weixin_29006701的博客 281

采用了fluent模拟了平壁面结霜过程。udf,很经典,可以试试。

利用该模型作为FLUENT中的源项,模拟了在局部冷却下冷表面上的霜形成,以预测霜的形态、温度分布和霜的重量,结果与实验结果吻合良好。结果显示,霜首先围绕冷却块形成,然后逐渐向其他方向扩展,冷却块上方的霜密度最大。随着时间的推移,平均霜厚度逐渐增加,生长速率减慢,而平均霜密度随增长速率变快而增加。相变传递微观过程与机理、蒸发及冷凝换热、强化传热、高效传热管、热泵、制冷、节水节能新技术、电子元器件冷却、余热回收及梯级利用等。udf,很经典,可以试试。工程热物理、空调、热能、低温制冷、化工、物理等。

qq_15963745的博客 922

ibatis sql_Map中出现异常:Cause: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate..

sql_map 原始配置            SELECT * FROM contact t        LEFT JOIN country c ON t.contact_id = c.country_id            执行后出现: org.springframework.jdbc.UncategorizedSQLException: Sql

david的专栏 8709

am62x A53与R5F通信

AM62x是Ti的一款异构多核芯片。remoteproc驱动,硬编码(写死)了R5F/M4F固件的名字,这样驱动启动时,就会找硬件编码的固件,下面是其对应关系。值得注意的是,linux内核中的M4F remoteproc驱动启动M4F,而linux内核中的R5F remoreteproc驱动不启动R5F,相反,它attach到已经在boot阶段启动的R5F固件上。在/lib/firmware的真实固件名:,而我们生成的固件名如下所示,没有直接对应的,经确认,.out文件就是我们需要的,重命名后即可。

鹰之翔 1363

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

UE4打包为Framework库嵌入iOS原生工程

UE4打包为Framework库嵌入iOS原生工程

tangfuling1991的博客 1294

车间数据孤岛终于破了!C#上位机+MQTT打通产线与MES,数据延迟从小时级降到秒级

本文针对工业上位机开发中常见的车间数据与企业管理系统(MES)割裂问题,提出基于C#和MQTT协议的完整解决方案。通过EMQX MQTT Broker实现数据实时双向传输,将质量追溯时间从2小时缩短至10秒,生产计划自动下发,实现秒级数据延迟。方案采用分层解耦架构,支持设备更换和系统升级,核心优势包括低延迟、高可靠性和易扩展性。文章详细介绍了MQTT协议选型理由、整体架构设计、技术选型(EMQX Broker和MqttNet客户端),并提供了C#实现代码和部署流程。该方案已在实际产线验证,可有效解决&quo

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 483

ibatis resultclass java.util.list_ibatis中动态查询表返回用resultClass="java.util.HashMap" 的问题...

1.Map作为parameterClass映射文件:select * from t_productwhere prd_id=#id# and prd_description=#description#]]>?DAO层:/*** java.util.Map作为parameterClass*/public Product getProductMap(Map map) throws SQLExce...

weixin_34701183的博客 197

seurat v5更新及样本整合方法

1 Seurat 对象和 Assay 类发生了变化:支持更多种类的检测和数据类型,包括磁盘上的矩阵。引入了分层结构来存储数据,例如原始计数、标准化数据和 z 得分/方差稳定数据。可以使用 $ 访问器或 LayerData 函数来访问数据。现有的 Seurat v4 函数和工作流程仍可在 v5 中使用。2 整合工作流程发生了变化:简化了整合流程,提高了速度和内存效率。整合结果与 v4 工作流程略有不同,但用户仍可在 v5 中运行 v4 整合工作流程。

hx2024的博客 2686

ibatis resultclass java.util.list_ibatis中动态查询表返回用resultClass=”java.util.HashMap” 的问题 | 学步园...

1.Map作为parameterClass映射文件:select * from t_productwhere prd_id=#id# and prd_description=#description#]]>?DAO层:/*** java.util.Map作为parameterClass*/public Product getProductMap(Map map) throws SQLExce...

weixin_29577885的博客 244

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ibatis 返回map或者是List<Map> resultclass "java.util.hashmap" 缓存 字段和map中key对应不上

&lt;select id="queryFrontData" remapResults="true" resultClass="java.util.HashMap" parameterClass="map"&gt;         select y.* from x     &lt;/select&gt; 发挥map可以一个查询多个表 这是由于第一次执行该sql时示正常的,再次执行或错乱;说明

大龙成 1132

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ibatis中动态查询返回字段返回用resultClass="java.util.HashMap" 的问题

org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   --- The error occurred in jndi:/...

我的技术旅程 469

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

记ibatis使用动态列查询问题(remapresults)

今天在项目开发中,遇到了一个问题:使用ibatis 动态查询列时,每次返回的结果列都是第一次查询的结果列,然而控制台执行的SQL语句时包含该结果列的。比如: <select id="query" resultClass="java.util.HashMap" parameterClass="java.util.HashMap"> SELECT col_0, ...

雨后是冰雹 659

ibatis返回结果映射到HashMap时,列名无效的问题

<br />适用于确认列名在在相应的数据表、domain中存在<br /> <br /><select id="select" resultClass="java.util.HashMap"  ><br />                select * from $tableName$ where id=#id#<br /></select><br /><br /><br />该查询结果映射到HashMap中,第一次使用这个语句是没有问题,但是当使用这个语句查询别的表时,报错为“列名无效”,分析之后原因

摩西的博客 爱it 爱生活 爱折腾 2538

ibatis中动态查询表返回用resultClass java util HashMap 的问题

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;i

ugfdfgg的博客 368

ibatis执行动态sql报错

com.ibatis.common.jdbc.exception.NestedSQLException:    --- The error occurred in com/ictehi/grainplat/sqlMap/sainout.xml.   --- The error occurred while applying a result map.   --- Check the find

Howard6的博客 1233

ibatis resultclass "java.util.hashmap" 缓存

在做ibatis项目过程中遇到如下样式动态查询 &lt;select id="searchByKW" resultClass="java.util.HashMap" parameterClass="java.util.HashMap"&gt; &lt;![CDATA[ select * from $username$.$tablename$ where contains($us...

xiaoxin 287

ibatis与springmvc出现Check the result mapping for the 'xxx' property的错误

有与项目需要,将数据库中的一个表增加了一个字段。

abcxuchuang123的专栏 8147

ibatis 异常

 今天用ibatis的时候,发生了一个奇怪的异常Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:   --- The error occurred in com/yh/tdscdma/entity/device/PmInfoNew.xml.  --- The error occurred while applying

philip的专栏 4487

resultmap的写法_mybatis的resultType=“java.util.HashMap”的懒人写法

selectud.id,ud.address,ud.zipcode,ud.consignee,ud.telephone,ud.is_default,ud.province,ud.city,ud.county,(selectregion_namefrombase_regionwhereid=ud.province)asprovince_name,(selectregion_n...

weixin_34443842的博客 2514
上一篇: 在SQL SERVER中当查询的条件是一个选择范围的SQL语句怎么写?
下一篇: Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
javaPie
博客等级 码龄16年 1171粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值