`

在是用Ibatis是操作Oracle数据库字段类型为LONG的问题

    博客分类:
  • Java
阅读更多

查询语句:

	<select id="selectJingHuaBlogArticleCount" resultMap="result_JingHuaBlog" >
		<![CDATA[
		select * from (
		SELECT a.article_id,a.class_id,a.article_title,a.article_content,c.class_name,l.member_register_id,l.member_register_pic,l.member_register_okno
		 FROM article a,ARTICLE_CLASS c,login_information l 
		 WHERE a.class_id=c.class_id AND a.member_register_id=l.member_register_id AND a.pick=1 and a.auth=1
		)ttt where rownum < $count$		
	]]>
	</select>

 映射的结果对象:

	<resultMap class="article" id="result_JingHuaBlog">
		
		<result column="article_id" property="articleId" />
               <result column="article_content" property="articleContent"/>

		<result column="class_id" property="articleClass.classId" />
		<result column="class_name" property="articleClass.className" />
		<result column="article_title" property="articleTitle" />
		<result column="member_register_pic" property="loginInformation.memberRegisterPic" />
		<result column="member_register_okno" property="loginInformation.memberRegisterOkno" />
		<result column="member_register_Id" property="loginInformation.memberRegisterId" />
	</resultMap>
 

 

       是使用iBatis操作oracle数据库时,当你的字段类型为LONG类型的时候,查询出结果的时候会报流已经被关闭,这个问题困扰了我好几个小时,使用最基本的JDBC 对Oracle.Long型可以直接通过ResultSet.getString()读写的,一直就想不通为什么?我知道无论是LONG,CLOB还是BLOB实际上都只是resultset拿一个定位符,LONG和CLOB 就会在getString时侯打开一个流由JDBC转换成String;如果再次读同一个定位符就会得到这个"流已经关闭"的错误信息。不过,我就是检查 来检查去,无论如何发现不了重复执行两次get同一字段的代码。

       一直到我使用一个检测代码执行同样的取值时,发现如果在一行resultset中先读其他列然后再读这个Long列就会出同样 的错误。所以只要把上面的结果映射的

<result column="article_content" property="articleContent"/>

拿到最前面就一切正常,但是还是不明白为什么?

分享到:
评论

相关推荐

    ibatis常用的sql

    这些SQL语句主要用于Oracle数据库中,涉及到了删除、插入以及查询等基本操作,并且在ibatis框架中实现了参数化处理。 ### 一、删除操作 首先我们来看第一条SQL语句: ```xml parameterClass="long"&gt; delete ...

    Mybatis优化

    此时可以在实体类中定义两个属性,一个是原始的数据库字段类型,另一个是业务逻辑所需的类型,并提供对应的Getter/Setter方法来完成数据的转换。 ```java public class Bean { private Money price = null; ...

    springBoot中mybatis Plus示例

    在本文中,我们将深入探讨如何在SpringBoot应用中集成并使用MyBatis Plus。MyBatis Plus(简称MP)是一个强大的MyBatis扩展,它简化了数据库操作,提供了丰富的CRUD(创建、读取、更新、删除)功能,以及一些实用的...

    java必备知识点大全.pdf

    id、rowid、rownum的区别:id通常是主键字段的名称,rowid是Oracle数据库中每行数据的唯一标识,rownum是查询结果集中行的编号。 主键和唯一索引的区别:主键用于标识表中的每一行,唯一索引则是保证列中值的唯一性...

    spring-boot-mybatis-plus数据层框架

    ### Spring Boot与MyBatis-Plus整合详解 #### 一、MyBatis-Plus概述 MyBatis-Plus(简称MP)是MyBatis的一个...通过上述步骤,我们可以在Spring Boot项目中顺利地集成并使用MyBatis-Plus,从而实现高效的数据库操作。

    自整理Java关于基础和框架的面试题

    - **java.sql**: 用于连接和操作数据库。 ##### Get和Post的区别 - **GET**:主要用于获取资源,将数据附在URL之后,安全性较低,但传输速度快。 - **POST**:用于向服务器发送数据,数据放置在HTTP包的正文中,更...

    mybatis insert返回主键代码实例

    对于 Oracle 数据库,使用 `selectKey` 元素可以获取 sequence 的值,示例代码如下: ```xml &lt;insert id="insertUser" parameterClass="ibatis.User"&gt; &lt;selectKey resultClass="long" keyProperty="id"&gt; select ...

    最新Java面试宝典pdf版

    5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...

    JAVA面试宝典2010

    5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...

    Java面试宝典-经典

    5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...

    java面试题大全(2012版)

    5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...

    java面试宝典2012

    5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...

    Java面试宝典2012新版

    5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最...

    Java面试宝典2012版

    5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用...

    java面试知识

    - **java.sql**:为SQL数据库访问提供API支持。 ##### Get和Post的区别 - **GET**:数据作为URL的一部分发送,安全性较低,适合于传输小量数据。 - **POST**:数据通过请求体发送,不显示在URL中,适合传输大量或...

    springboot整合mybatis

    创建与数据库表对应的实体类,例如`User.java`,包含与数据库字段相对应的属性和getter/setter方法。 5. **编写Mapper接口** 创建Mapper接口,比如`UserMapper.java`,定义需要执行的SQL语句。这些方法名会与XML...

Global site tag (gtag.js) - Google Analytics