近日开发中用到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
会在每次查询的时候内省查询结果来设置元数据,来保证返回恰当的结果。这个属性会造成一定的性能损失,所以要谨慎使用,只在你需要的时候使用--查询列发生变化
分享到:
相关推荐
这意味着,如果前后两次查询的表结构不同(即字段不同),缓存的字段信息将会导致第二次查询时出现问题。 #### 示例代码解析 以下是一个具体的示例场景: ```xml <!-- 根据查询条件从类推数据表中查询数据 --> ...
如果使用“#{tableName}`,Ibatis会尝试将`users`作为一个参数值去处理,这显然会导致语法错误。 除了表名和列名,还可以使用“##”处理其他SQL关键字,比如在动态联接查询中: ```xml SELECT * FROM table1 t1 ...
这是一个帮助文件,通常包含一系列关于如何快速入门Ibatis的教程和示例。它可能涵盖了以下内容: - **安装与配置**:解释如何将Ibatis集成到Java项目中,包括添加jar依赖、配置mybatis-config.xml文件以及Spring...
在深入探讨ibatis框架中可能遇到的错误时,我们首先需要理解ibatis(现被称为MyBatis)的基本概念。ibatis是一种优秀的持久层框架,它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。ibatis可以使用...
Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...
Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,提供了更加灵活的数据访问接口。 在"ibatis demo"中,我们通常会看到以下核心概念和知识点: 1. **配置文件**:Ibatis的配置文件(mybatis-...
在IT行业中,数据库操作是必不可少的一部分,而Ibatis作为一款流行的Java持久层框架,它使得SQL与Java代码更好地...对于`ibatisdemo`这个项目,你可以按照上述方法检查并调整项目的配置,以解决可能出现的乱码问题。
《深入解析iBatis源码》 iBatis,一个优秀的Java持久层框架,以其轻量级、灵活的特性在众多ORM(Object-Relational Mapping)...同时,源码学习也能帮助我们解决实际项目中遇到的问题,增强我们在ORM领域的专业技能。
在配置iBatis3.0时,可能会遇到各种小错误,这些错误往往由于不正确的配置、依赖缺失或者编码问题导致。以下是对这个主题的详细解释。 首先,让我们了解iBatis是什么。iBatis是一个优秀的持久层框架,它允许开发者...
标题和描述中反复提及的是“ibatis资料”,这表明主题是关于iBATIS,一个已退役的开源Java数据访问框架。iBATIS最初由James Gullickson创建,它允许开发者将SQL语句直接嵌入到Java代码中,提供了数据库操作的便利性...
Ibatis文档是学习和解决问题的重要资源,它包含了详细的API参考、配置指南、最佳实践和常见问题解答。通过阅读文档,你可以了解如何配置Ibatis、创建Mapper接口和XML映射文件,以及如何处理复杂的查询和关联。 在...
在本压缩包中,你将找到一系列关于iBatis的学习资源,包括PDF文档、实例代码等,这些都是深入理解和掌握iBatis的关键。 首先,"iBatis精讲PDF"是理解iBatis基础概念和工作原理的重要资料。iBatis的核心理念是将SQL...
自己写了一个Ibatis入门文件 JDK用的1.4 ibatis用的2.3.0 一定要注意版本问题,不然出现本本不兼容很费劲,我调了一上午,注意一定要用JDK1.4 ibatis2.3.0! 数据库自己建一张简单的表就行了,特别说明 只适合新手...
为了解决这个问题,ibatis(现已更名为MyBatis)提供了一种支持批量更新的机制,能够显著提高数据处理的速度。 #### 批量Update背景与问题 在实际应用中,经常会遇到需要批量更新数据库中的数据的情况,例如:商品...
自己平时学ibatis时候 遇到的问题 记下来了以及解决方法
这个压缩包包含了关于iBatis 2.0的开发文档,对于理解并使用iBatis进行数据操作具有重要的参考价值。 `iBatis_to_MyBatis.html` 文件可能是一个关于iBatis到MyBatis转型的指南。MyBatis是iBatis的后续版本,它在...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写SQL语句上,而无需关注JDBC代码的编写。Ibatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的...
iBATIS是一个由Clinton Begin创建,目前由Apache基金会支持的持久化框架,它专注于数据库查询的简化,尤其在JDBC编程方面提供了极大的便利。相对于全自动化ORM解决方案如Hibernate,iBATIS被称为“半自动化”ORM实现...
iBATIS DAO是Java开发中的一个持久层框架,它提供了数据访问对象(DAO)的实现,使得数据库操作更加简单和灵活。在这个2.3.4.726版本的源码中,我们可以深入理解iBATIS DAO的工作原理,并通过添加注释来帮助我们更好...