`
malixxx
  • 浏览: 98164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ibatis 保持序列化对象

阅读更多
数据库表
CREATE TABLE `info_thread` (
  `id` bigint(20) NOT NULL auto_increment,
  `infoId` bigint(20) NOT NULL,
.......
  `stackInfo` BLOB default null,
 
  PRIMARY KEY  (`id`),
  KEY `infoId` (`infoId`),
  KEY `serverId` (`serverId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


1.JvmInfo.java里面   引用下面类对象.
private List<ThreadInfo> statckInfos;
.......

2.ThreadInfo.java里面   要序列化这个数组
private StackTraceElement[] stackInfo;
.......

3.JvmInfo.xml  这里在获得JvmIinfo对象时,生成List<ThreadInfo>
<resultMap id="JvmInfoResult" class="JvmInfo">
<result property="id" column="id"/>
<result property="statckInfos" column="id" select="getThreadInfosByInfoId"/>
</resultMap>
 
<resultMap id="ThreadInfoResult" class="ThreadInfo">
<result property="id" column="id"/>
<result property="infoId" column="infoId"/>

这里要设置 javaType="[Ljava.lang.StackTraceElement;" jdbcType="BLOB" 可是不知道为什么我测试的时候返回的是byte[].?????????
   <result property="stackInfo" column="stackInfo" javaType="[Ljava.lang.StackTraceElement;" jdbcType="BLOB"/>
</resultMap>

<statement id="getThreadInfosByInfoId" parameterClass="java.lang.Long" resultMap="ThreadInfoResult">
select * from info_thread where infoId = #value#
</statement>

<insert id="insertThreadInfo" parameterClass="ThreadInfo"> 
<![CDATA[INSERT INTO info_thread(
serverId,infoId,threadId,threadName,allCupTime,userCupTime,isAlive,stackInfo)
VALUES(#serverId#,#infoId#,#threadId#,#threadName#,#allCupTime#,#userCupTime#,#isAlive#,#stackInfo,jdbcType=BLOB,javaType=[Ljava.lang.StackTraceElement;#)]]>   
<selectKey resultClass="java.lang.Long" keyProperty="id"> 
<![CDATA[SELECT LAST_INSERT_ID() AS ID ]]> 插入时把id赋值
</selectKey> 
</insert>

4.SqlMapConfig.xml配置里

<typeHandler javaType="[Ljava.lang.StackTraceElement;" callback="com.ibatis.sqlmap.engine.type.ObjectTypeHandler" jdbcType="BLOB"/> 


不知道为什么获得的byte[].我做了反序列化
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new ByteArrayInputStream(s));
StackTraceElement[] stackInfo = (StackTraceElement[]) ois.readObject();
this.stackInfo = stackInfo;

} catch (Exception e) {
this.stackInfo = new StackTraceElement[0];
} finally {
if (ois != null) {
try {
ois.close();
} catch (IOException e) {
}
}
}






分享到:
评论

相关推荐

    Spring in Action(第2版)中文版

    9.4.4配置消息序列化器 9.4.5处理端点异常 9.4.6提供wsdl文件 9.4.7部署服务 9.5消费spring-wsweb服务 9.5.1使用web服务模板 9.5.2使用web服务的网关支持 9.6小结 第10章spring消息 10.1jms简介 10.1.1...

    Spring in Action(第二版 中文高清版).part2

    9.4.4 配置消息序列化器 9.4.5 处理端点异常 9.4.6 提供WSDL文件 9.4.7 部署服务 9.5 消费Spring-WS Web服务 9.5.1 使用Web服务模板 9.5.2 使用Web服务的网关支持 9.6 小结 第10章 Spring消息 10.1 JMS...

    Spring in Action(第二版 中文高清版).part1

    9.4.4 配置消息序列化器 9.4.5 处理端点异常 9.4.6 提供WSDL文件 9.4.7 部署服务 9.5 消费Spring-WS Web服务 9.5.1 使用Web服务模板 9.5.2 使用Web服务的网关支持 9.6 小结 第10章 Spring消息 10.1 JMS...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    A .POJO类中的任何布尔类型的变量,都不要加is,因为部分框架解析时有可能会出现序列化错误。 B .包名统一使用单数形式,如:com.alibaba.mpp.util。 C .中括号是数组类型的一部分,数组定义如下:String[] ...

    最新Java面试宝典pdf版

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的...

    Java面试宝典2010版

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 75、描述一下JVM加载class文件的原理机制? 76、heap和stack有什么区别。 77、GC是什么? 为什么要有GC? 78、垃圾回收的优点和...

    Java面试笔试资料大全

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的...

    JAVA面试宝典2010

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的...

    Java面试宝典-经典

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的...

    java面试题大全(2012版)

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的...

    Java面试宝典2012版

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾...

    java面试宝典2012

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 56 75、描述一下JVM加载class文件的原理机制? 56 76、heap和stack有什么区别。 57 77、GC是什么? 为什么要有GC? 57 78、垃圾回收的...

    Java面试宝典2012新版

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的...

    Java 面试宝典

    22、面向对象的特征有哪些方面 ................................................................................. 16 23、java 中实现多态的机制是什么? ......................................................

Global site tag (gtag.js) - Google Analytics