ibatis的动态结果使用 java.util.HashMap,来映射,在昨天遇到一个情况,,,挺郁闷:
HashMap虽然可以映射,但返回值类型是不确定的,我调用一个存储过程,返回字段为
@result,值为0或-1,开始还能通过map.get("@result")来正常获到0或-1,后来就报错了,
通过调试,发现map里key "@result" 对应的value 是个字节数组byte[].
这种不确定性,肯定在其他类型里也存在,不知道有没有什么好的解决方案。
补充:
后来 我用
<resultMap id="..." class="java.util.HashMap" >
<result property="@result" column="@result" jdbcType="NUMBER" />
...
</resultMap>
来定义返回类型也没用
再后来
我把存储过程改成用-1 replace @result
select -1,.... from tablename
resultmap:
<resultMap id="..." class="java.util.HashMap" >
<result property="@result" column="-1" />
...
</resultMap>
结果可以就可以了....
我在改成原来的
<resultMap id="..." class="java.util.HashMap" >
<result property="@result" column="@result" />
...
</resultMap>
又报错.....
数据库原因?ibatis bug? 受不了,还是那句话所谓的完美都是假象,code可以是最不严谨的逻辑了
分享到:
相关推荐
在映射文件中,iBATIS提供了强大的映射机制,比如自动类型转换、结果集嵌套处理、自动生成主键等。例如,和可以将查询结果的列名映射到Java对象的属性上,元素可以根据特定列的值来决定如何映射结果集,实现多态查询...
ibatis 是一个基于 Java 的开源持久层框架,它提供了 SQL 映射功能,使得开发者可以通过 XML 文件或注解来定义 SQL 查询语句、参数类型以及结果映射规则,从而极大地简化了 JDBC 编程的复杂性。与 Hibernate 等全 ...
2. **结果集映射**:iBATIS 使用 `<resultMap>` 元素来定义结果集的映射规则,将数据库查询结果中的列与 Java 对象的属性对应起来。例如: ```xml ``` 这段配置将数据库中的 USER_ID、USER_NAME 和 ...
例如,你可以研究`ResultHandler`和`ResultSetHandler`接口,它们在处理结果集时起着关键作用。此外,`SqlSession`类的`selectList`方法是执行查询的核心,通过它可以控制数据加载的方式,如懒加载或立即加载。 在...
1.1 SQL 映射文件:Ibatis 的核心是 SQL 映射文件,它定义了 SQL 语句、参数映射和结果集映射。XML 格式的映射文件允许开发者以清晰的方式编写 SQL,并将其配置到应用程序中。 1.2 映射元素:包括 `select`、`...
3. **结果映射**:学习如何将数据库结果映射到Java对象,包括基本类型、复杂类型(如List、Map)和自定义对象。 4. **参数映射**:了解如何传递参数给SQL语句,包括传入简单类型和复杂类型的参数。 5. **事务管理*...
这样做可以确保每次查询时都会重新映射结果集,而不是使用缓存的映射信息。 #### 实施步骤 1. **检查 SQL 语句**:首先确认所有涉及到动态表名和动态字段名的 `<select>` 标签中是否都已经正确地设置了 `...
Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,提供了更加灵活的数据访问接口。 在"ibatis demo"中,我们通常会看到以下核心概念和知识点: 1. **配置文件**:Ibatis的配置文件(mybatis-...
这里使用了`<select>`标签,其`id`是查询方法的标识,`parameterType`指定了传入参数的类型,`resultMap`则指定了返回的结果集映射。查询SQL使用了LEFT JOIN来连接`test_xxx_classInfo1`,`test_xxx_teacherinfo`和`...
在IT行业中,数据库操作是应用开发的核心部分,而IBatis和Hibernate作为两个流行的ORM(对象关系映射)框架,极大地简化了数据访问层的开发。本文将深入探讨JQuery的启发,以及如何利用这些思想来优化对这两个框架的...
3. **结果集映射**:详细解释了如何通过ResultMap定义结果集到Java对象的映射,包括基本类型、复杂类型、关联映射等。 4. **参数映射**:介绍如何使用parameterMap来指定输入参数,包括基本类型、Map对象、JavaBean...
ResultSetHandler处理查询结果,将数据库结果集映射为Java对象。在`org.apache.ibatis.executor.resultset.ResultSetHandler`中,ResultMap被用来定义字段与Java对象属性的映射关系。ResultMap不仅支持简单的列名...
例如,它可以处理多表查询、自定义类型映射、嵌套结果集等复杂情况。这些特性将在后续的章节中进一步探讨。 总的来说,iBATIS作为一个data mapper,它的核心价值在于提供了一个灵活且独立于数据库和对象模型的SQL...
Ibatis支持动态SQL,这使得开发者能够在SQL映射文件中根据条件动态构建SQL语句,极大地提高了代码的复用性和灵活性。此外,Ibatis还提供了事务管理,可以控制事务的边界,确保数据的一致性。 总的来说,Ibatis驱动...
4. 参数映射和结果映射:详细解释了如何处理输入参数和返回结果,包括自动类型匹配、级联映射等。 5. 事务管理:介绍如何使用Ibatis进行事务控制,包括手动和自动事务。 6. 缓存:Ibatis提供了本地缓存和二级缓存...
6. **结果集映射**:探讨如何使用`<resultMap>`定义结果集映射规则,包括一对一、一对多、多对多关系的映射,以及自动类型转换。 7. **接口与映射器**:介绍在Java代码中如何定义接口,并与XML映射文件中的SQL语句...
这个文档集主要涵盖了iBATIS的安装、配置以及如何使用映射语句处理数据操作,特别是复杂对象数据关系的处理。让我们深入探讨这些关键知识点。 首先,**iBATIS的安装和配置**是使用iBATIS的第一步。在Java环境中,...
2. 映射文件:通过XML映射文件,定义SQL语句及其结果集映射。对于Oracle的特殊语法,如PL/SQL块,Ibatis3也能够良好支持。 3. CRUD操作:Ibatis3提供了一套完整的API,用于执行增删改查操作。例如,`SqlSession....
4. **结果集映射**:Ibatis通过`<resultMap>`标签定义结果集映射,可以处理复杂的一对多、一对一、多对多关系,以及自定义类型转换等。 5. **事务管理**:在Spring环境中,可以使用Spring的...
ibatis的核心是其XML配置文件,用于定义SQL映射规则、参数类型和返回类型。通过XML文件,开发者可以清晰地定义每个SQL语句,以及如何将结果集映射到Java对象。这种配置方式使得ibatis非常灵活,能够适应各种复杂的...