整合Struts&Spring&Ibatis时,交付项目前,工程部测试数据竟让报错了:
错误:
SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; Error: executeQueryForObject returned too many results.; nested exception is java.sql.SQLException: Error: executeQueryForObject returned too many results.
晕!
分析:
看看报错信息:
java.sql.SQLException: Error: executeQueryForObject returned too many results.
也就是sql返回的结果多了,如果有多条返回结果,不应该用executeQueryForObject,应该用executeForObjectList.
再思:但是我要的就是一个对象。
仔细分析,QueryForObject方法返回的是一个对象,大前提方法没错。
报异常了,是不是有多个对象啊?
看看控制台输出的信息,的确是Services层报错,拷贝Sql语句执行,果然返回两个相同对象,那就整整sql语句吧,去除不必要的关联。
重启,OK!
分享到:
相关推荐
文档标题与描述均为“Ibatis查询Id列表.doc”,这表明文档内容主要聚焦于如何使用Ibatis查询ID列表。ID列表在实际应用中通常用于获取一系列记录的主键值,以便后续进行更复杂的操作或查询。 ### 三、查询Id列表的...
### 操作数据库iBATIS查询详解 #### 一、iBATIS中的LIKE查询技巧 iBATIS是一款优秀的Java持久层框架,它简化了基于SQL的程序编写,避免了程序员手动处理结果集和手工编写SQL语句。在进行数据库查询时,LIKE查询是...
特别地,`users`属性通过`column="oid"`和`select="getUsersByBookId"`来指定,这意味着Ibatis将根据`oid`执行另一个SQL查询(即`getUsersByBookId`),并将返回的结果填充到`Book`对象的`users`属性。 `select`...
总结起来,这个Ibatis查询语句充分展示了Ibatis处理复杂查询的能力,包括动态SQL、子查询、多表联接、条件判断、数据类型映射和迭代处理等功能。在实际开发中,这种灵活性使得Ibatis能够适应各种复杂的业务场景,...
`resultMap` 用于指定查询结果如何映射到 `Book` 类,其中 `users` 属性的 `column` 设置为 `oid`,`select` 设置为 `getUsersByBookId`,这意味着 Ibatis 将通过执行这个方法来获取与书关联的作者。`selectAllBooks...
通过上述示例,我们可以了解到如何在 iBatis 中编写复杂的 SQL 查询语句,并且如何通过定义合适的 `ResultMap` 来处理查询结果。这对于实际项目开发具有重要的指导意义,有助于开发者更好地利用 iBatis 提高开发效率...
【标题】:深入理解iBATIS的查询机制 【描述】:本文将详细解析iBATIS框架中的查询功能,包括处理复杂对象关系、XML映射和数据集操作,旨在帮助开发者充分利用iBATIS进行高效数据库操作。 【标签】:iBATIS、查询...
具体表现为:当第一次查询某个表时,IBatis会将查询结果中的字段名缓存起来;而在后续查询其他表时,如果这些表的字段与之前缓存的字段不一致,就会导致查询失败。 #### 问题分析 在IBatis框架中,`...
首先,iBatis的核心概念是SQL Map,它是一个XML配置文件,用于定义SQL语句、参数映射和结果集映射。在描述中提到的"按条件查询",就是通过iBatis动态构建SQL语句来实现的。开发者可以在SQL Map中定义一个模板SQL,...
针对ibatis的多参数查询问题,这里介绍三种常见的解决方法: ##### 1. 使用字符串(String)替代 **实现方式:** - 在SQL映射文件中,定义`<select>`标签的`parameterClass`属性为`java.lang.String`。 - 直接在...
在控制台打印主子表查询结果时,可以利用log4j的`Logger`类,设置合适的日志级别(如DEBUG),并在查询执行后调用`info()`或`debug()`方法,将查询结果输出到控制台。确保在项目配置中添加了log4j.properties文件,...
最后,在控制器(Controller)或视图层,你可以通过调用Service的方法,获取到包含连接查询结果的`List<Depart>`,并展示在页面上。 注意,iBatis还支持动态SQL,这意味着你可以在XML配置文件中使用`<if>`、`...
在处理IBatis和Hibernate查询结果时,我们可以借鉴JQuery的这些特性。首先,我们可以创建一个自定义的工具类或封装库,提供类似JQuery的API来遍历和操作查询结果。例如,我们可以定义一个`ResultWrapper`类,它接受...
6. **结果映射**:结果映射允许我们将查询结果自动映射到Java对象。Ibatis提供了多种方式来实现映射,如自动类型匹配、自定义类型处理器、复杂关联映射等。 7. **缓存机制**:Ibatis内置了本地缓存和二级缓存,可以...
当我们需要进行多表查询时,iBatis提供了一种高效且易于管理的方式。本文将深入探讨iBatis在处理多表查询时的具体步骤和技巧。 ### 1. iBatis简介 iBatis 是一个基于Java的持久层框架,它简化了数据库访问,并避免...
因此,使用 `HashMap` 这种灵活的数据结构来存储查询结果便成为了一个很好的解决方案。 #### 3. 如何配置 ibatis 映射文件 在 ibatis 中,可以使用 `<select>` 元素来定义 SQL 查询,并通过 `resultClass` 属性...
映射文件通常包含SQL语句和结果映射,其中结果映射定义了数据库查询结果如何转换为Java对象。 例如,在一对多关系中,一个实体(如用户)可以有多个关联的实体(如订单)。在iBATIS中,你可以通过`<collection>`...
本教程聚焦于如何使用Ibatis查询指定ID的单个对象,这对于日常的数据检索工作尤为重要。 首先,理解Ibatis的基本架构。Ibatis不是一个完整的ORM(对象关系映射)框架,而是介于SQL和Java之间的桥梁,允许开发者编写...
ResultSetHandler处理查询结果,将数据库结果集映射为Java对象。在`org.apache.ibatis.executor.resultset.ResultSetHandler`中,ResultMap被用来定义字段与Java对象属性的映射关系。ResultMap不仅支持简单的列名...
本文将围绕“IBATIS开发使用实例”这一主题,深入解析复杂SQL查询的应用,尤其是如何利用SQL进行多表关联、条件筛选以及聚合函数的使用。 ### IBATIS简介 IBATIS,现被称为MyBatis,是一种优秀的持久层框架,它...