`
topcat
  • 浏览: 284384 次
  • 性别: Icon_minigender_1
  • 来自: 湖北武汉
社区版块
存档分类
最新评论

关于ibatis出现AutoResultMap错误的问题

    博客分类:
  • java
阅读更多

近日开发中用到ibatis在使用的过程中出现了AutoResultMap的错误

配置如下:

<select id="statistic" parameterClass="map" resultClass="java.util.HashMap">
    select 
	<isNotNull  property="category">
        b.description as descriptionB,
    </isNotNull>
	<isNotNull  property="serl">
        c.description as descriptionC,
    </isNotNull>
	sum(1) as total
	from 
		t_es_reginfo a
		<isNotNull  property="category">
			<isEqual compareValue="city" property="category">
				left join t_bs_$category$ b 
					on a.$category$=b.code
			</isEqual>
			<isNotEqual compareValue="city" property="category">
				left join t_cd_$category$ b 
					on a.$category$=b.id
			</isNotEqual>
		</isNotNull>
		<isNotNull  property="serl">
			<isEqual compareValue="city" property="serl">
				left join t_bs_$serl$ c 
					on a.$serl$=c.code
			</isEqual>
			<isNotEqual compareValue="city" property="serl">
				left join t_cd_$serl$ c 
					on a.$serl$=c.id
			</isNotEqual>
		</isNotNull>
	where a.examid=#examid#
	<isNotNull property="city">
		and a.city=#city#
	</isNotNull>
	group by 1
	<isNotNull property="category">
        ,a.$category$
    </isNotNull>
	<isNotNull property="serl">
	   ,a.$serl$
	</isNotNull>
	order by -1
	<isNotNull property="category">
        ,a.$category$
    </isNotNull>
	<isNotNull property="serl">
	    ,a.$serl$
	</isNotNull>
  </select>

 由于多次产生的列数可能会不一样,所以当每一次查出来是三列,第二次是两列的话就会报AutoResultMap的错( java.sql.SQLException:   列名无效),经查后发现有个remapResults的属性可以设置为true就可以了,原因如下:

 

在 【statement】, 【select】, 和【procedure】 标签中存在一个可选的属性【remapResults 】,默认值是false.如果每次查询的列不定的话,这个属性需要设置为true. 为了避免经常的对返回的结果进行内省,iBATIS 会记录上一次查询结果的元数据, iBATIS 会在每次查询的时候内省查询结果来设置元数据,来保证返回恰当的结果。这个属性会造成一定的性能损失,所以要谨慎使用,只在你需要的时候使用--查询列发生变化

分享到:
评论
3 楼 KG1898 2012-09-13  
谢谢,这问题让我搞了一整天都快崩溃了。。。
2 楼 jqs1124 2012-08-02  
让我搞了一个中午,刚开始以后是缓存问题,谢谢。。。
1 楼 rubyol 2009-01-06  
谢谢,今天在客户的服务器上遇到啦@!@

相关推荐

    解决IBatis缓存动态字段问题

    这意味着,如果前后两次查询的表结构不同(即字段不同),缓存的字段信息将会导致第二次查询时出现问题。 #### 示例代码解析 以下是一个具体的示例场景: ```xml &lt;!-- 根据查询条件从类推数据表中查询数据 --&gt; ...

    ibatis开发过程取值问题

    如果使用“#{tableName}`,Ibatis会尝试将`users`作为一个参数值去处理,这显然会导致语法错误。 除了表名和列名,还可以使用“##”处理其他SQL关键字,比如在动态联接查询中: ```xml SELECT * FROM table1 t1 ...

    关于Ibatis的jar包

    这是一个帮助文件,通常包含一系列关于如何快速入门Ibatis的教程和示例。它可能涵盖了以下内容: - **安装与配置**:解释如何将Ibatis集成到Java项目中,包括添加jar依赖、配置mybatis-config.xml文件以及Spring...

    ibatis的错误总结

    在深入探讨ibatis框架中可能遇到的错误时,我们首先需要理解ibatis(现被称为MyBatis)的基本概念。ibatis是一种优秀的持久层框架,它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。ibatis可以使用...

    ibatis总结 ibatis ibatis ibatis ibatis

    Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,提供了更加灵活的数据访问接口。 在"ibatis demo"中,我们通常会看到以下核心概念和知识点: 1. **配置文件**:Ibatis的配置文件(mybatis-...

    ibatis乱码解决方法(ibatis独立)

    在IT行业中,数据库操作是必不可少的一部分,而Ibatis作为一款流行的Java持久层框架,它使得SQL与Java代码更好地...对于`ibatisdemo`这个项目,你可以按照上述方法检查并调整项目的配置,以解决可能出现的乱码问题。

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    《深入解析iBatis源码》 iBatis,一个优秀的Java持久层框架,以其轻量级、灵活的特性在众多ORM(Object-Relational Mapping)...同时,源码学习也能帮助我们解决实际项目中遇到的问题,增强我们在ORM领域的专业技能。

    配置ibatis3.0时,发生的小错误

    在配置iBatis3.0时,可能会遇到各种小错误,这些错误往往由于不正确的配置、依赖缺失或者编码问题导致。以下是对这个主题的详细解释。 首先,让我们了解iBatis是什么。iBatis是一个优秀的持久层框架,它允许开发者...

    ibatis资料ibatis资料

    标题和描述中反复提及的是“ibatis资料”,这表明主题是关于iBATIS,一个已退役的开源Java数据访问框架。iBATIS最初由James Gullickson创建,它允许开发者将SQL语句直接嵌入到Java代码中,提供了数据库操作的便利性...

    ibatis api,ibatis文档,ibatis说明文档

    Ibatis文档是学习和解决问题的重要资源,它包含了详细的API参考、配置指南、最佳实践和常见问题解答。通过阅读文档,你可以了解如何配置Ibatis、创建Mapper接口和XML映射文件,以及如何处理复杂的查询和关联。 在...

    iBatis开发指南和一个iBatis实例

    在本压缩包中,你将找到一系列关于iBatis的学习资源,包括PDF文档、实例代码等,这些都是深入理解和掌握iBatis的关键。 首先,"iBatis精讲PDF"是理解iBatis基础概念和工作原理的重要资料。iBatis的核心理念是将SQL...

    ibatis 自己学的一个ibatis项目(只是打通了Oracle) 非常适合入门

    自己写了一个Ibatis入门文件 JDK用的1.4 ibatis用的2.3.0 一定要注意版本问题,不然出现本本不兼容很费劲,我调了一上午,注意一定要用JDK1.4 ibatis2.3.0! 数据库自己建一张简单的表就行了,特别说明 只适合新手...

    ibatis应对批量update

    为了解决这个问题,ibatis(现已更名为MyBatis)提供了一种支持批量更新的机制,能够显著提高数据处理的速度。 #### 批量Update背景与问题 在实际应用中,经常会遇到需要批量更新数据库中的数据的情况,例如:商品...

    关于ibatis的一些笔记

    自己平时学ibatis时候 遇到的问题 记下来了以及解决方法

    iBatis文档

    这个压缩包包含了关于iBatis 2.0的开发文档,对于理解并使用iBatis进行数据操作具有重要的参考价值。 `iBatis_to_MyBatis.html` 文件可能是一个关于iBatis到MyBatis转型的指南。MyBatis是iBatis的后续版本,它在...

    Ibatis入门例子,Ibatis教程

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写SQL语句上,而无需关注JDBC代码的编写。Ibatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的...

    ibatis教程,ibatis帮助文档

    iBATIS是一个由Clinton Begin创建,目前由Apache基金会支持的持久化框架,它专注于数据库查询的简化,尤其在JDBC编程方面提供了极大的便利。相对于全自动化ORM解决方案如Hibernate,iBATIS被称为“半自动化”ORM实现...

    iBATIS-DAO-2.3.4.726.rar_com.ibatis.dao_iBATIS dao 2_iBatis DAO_

    iBATIS DAO是Java开发中的一个持久层框架,它提供了数据访问对象(DAO)的实现,使得数据库操作更加简单和灵活。在这个2.3.4.726版本的源码中,我们可以深入理解iBATIS DAO的工作原理,并通过添加注释来帮助我们更好...

Global site tag (gtag.js) - Google Analytics