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

Castor使用之:映射Clob字段到xml文件

阅读更多
在使用Castor将java对象转换为xml文件时,会遇到Clob类型的属性的转换。Castor中没有Clob类型的处理器,因此需要我们自己实现一个ClobFieldHandler。

例如:我们要将Root.java转换成一个xml文件。

1.Root.java
package lab.castor.lab01;

import java.sql.Clob;

public class Root {
	private Clob comment;

	public Clob getComment() {
		return comment;
	}

	public void setComment(Clob comment) {
		this.comment = comment;
	}
}



2.mapping.xml


<?xml version="1.0"?>
<mapping>
  <class name="lab.castor.lab01.Root">
     <field name="comment" type="string" handler="lab.castor.lab01.ClobFieldHandler">
        <bind-xml node="comment"/>
     </field>
  </class>
</mapping>



3.ClobFieldHandler.java

package lab.castor.lab01;

import java.io.Reader;
import java.sql.Clob;

import org.exolab.castor.mapping.GeneralizedFieldHandler;

public class ClobFieldHandler extends GeneralizedFieldHandler {

	/**
	 * Creates a new ClobFieldHandler instance
	 */
	public ClobFieldHandler() {
		super();
	}

	/**
	 * This method is used to convert the value when the getValue method is called. The getValue method will obtain the
	 * actual field value from given 'parent' object. This convert method is then invoked with the field's value. The
	 * value returned from this method will be the actual value returned by getValue method.
	 * 
	 * @param value the object value to convert after performing a get operation
	 * @return the converted value.
	 */
	public Object convertUponGet(Object value) {
		if (value == null) {
			return null;
		}

		StringBuffer sb = new StringBuffer();
		try {
			Clob clob = (Clob) value;
			Reader reader = clob.getCharacterStream();
			if (reader == null) {
				return null;
			}

			char[] charbuf = new char[4096];
			// 解决4096字节大小的限制
			for (int i = reader.read(charbuf); i > 0; i = reader.read(charbuf)) {
				sb.append(charbuf, 0, i);
			}
		} catch (Exception e) {
			//
		}
		return sb.toString();
	}

	/**
	 * This method is used to convert the value when the setValue method is called. The setValue method will call this
	 * method to obtain the converted value. The converted value will then be used as the value to set for the field.
	 * 
	 * @param value the object value to convert before performing a set operation
	 * @return the converted value.
	 */
	public Object convertUponSet(Object value) {
		return null;
	}

	/**
	 * Returns the class type for the field that this GeneralizedFieldHandler converts to and from. This should be the
	 * type that is used in the object model.
	 * 
	 * @return the class type of of the field
	 */
	public Class getFieldType() {
		return Clob.class;
	}

	/**
	 * Creates a new instance of the object described by this field.
	 * 
	 * @param parent The object for which the field is created
	 * @return A new instance of the field's value
	 * @throws IllegalStateException This field is a simple type and cannot be instantiated
	 */
	public Object newInstance(Object parent) throws IllegalStateException {
		// -- Since it's marked as a string...just return null,
		// -- it's not needed.
		return null;
	}

}


没有实现String到Clob的转换。
0
0
分享到:
评论

相关推荐

    castor R/M映射神器

    提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。Castor(http://castor.exolab..org/)是一种将Java对象和XML自动绑定的开源软件。它可以在Java对象、XML文本、SQL数据表以及LDAP目录...

    castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具

    例如,如果你有一个`User`类,一个对应的XML结构,以及一个映射文件,你可以通过以下方式使用Castor: ```java import org.exolab.castor.xml.MarshalException; import org.exolab.castor.xml.Marshaller; import ...

    castor :Java与xml互转示例---代码

    在使用Castor之前,通常需要创建一个映射文件(`.xml`格式),它定义了Java类和XML元素之间的对应关系。例如,假设有一个简单的`Person`类: ```java public class Person { private String name; private int ...

    Castor的使用,如何将java object转换为xml

    通过Mapping文件,开发者可以控制Java对象到XML的转换细节,如字段名的映射、类型转换和嵌套结构的处理。此外,Castor还支持JDBC数据源到XML的转换,以及对JDO(Java Data Objects)的支持。 **二、Java对象转换为...

    castor1-2(java and xml 数据绑定过程所需数据包)

    Castor通过其内部的API,可以方便地读取XML文件并将其内容映射到Java对象上,同时也可以将Java对象的状态转换为XML格式的文件。这个过程包括了以下几个关键步骤: 1. **XML到Java对象的映射(XML to Java Mapping)...

    xml的一个解析工具castor

    1. **XML到Java对象绑定**:Castor通过XML Schema或者XML文件定义的映射关系,可以自动将XML数据解析为Java对象。这使得开发者无需手动编写繁琐的解析代码,提高了开发效率。 2. **Java对象到XML序列化**:反之,...

    castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具1.2

    5. 在Java代码中使用Castor库,根据映射文件将XML数据反序列化为Java对象,或者将Java对象序列化为XML数据。 6. 编写并运行测试用例,确保数据转换的正确性。 总之,"castor插件java对象和XML自动绑定mapping文件...

    castor解析xml与xsd校验xml

    Castor是一个Java库,它提供了一种方便的方式来映射XML数据到Java对象,反之亦然。这个工具在处理XML文档时特别有用,因为它允许开发者通过简单的对象操作来处理复杂的XML结构,而无需直接处理XML语法。本文将深入...

    Castor (二) -- 自定义映射

    在XML到Java对象的映射过程中,Castor使用了DTD(Document Type Definition)和XSD(XML Schema Definition)来定义映射规范。`mapping.dtd`和`mapping.xsd`文件就是映射文件,它们分别代表了基于DTD和XSD的映射规则...

    javabean 转换 xml映射文件工具

    JavaBean到XML映射文件工具是一种实用程序,它允许开发者将Java对象(即JavaBean)的数据转换成XML格式的文件,反之亦然。这个工具在处理数据交换、持久化或配置文件时非常有用,特别是在使用像Castor这样的框架时。...

    castor-1.3.2.zip

    - `castor-1.3.2.dtd`或`castor.xsd`:这些是映射文件的DTD(文档类型定义)或XML Schema,定义了映射文件的结构。 - `README`或`README.txt`:包含有关如何使用和配置Castor的信息。 - `LICENSE`或`NOTICE`:关于...

    castor样例xml to bean和bean to xml样例

    这个“castor-1.3.1-examples.zip”文件包含了一些示例,展示了如何使用Castor进行XML到Bean以及Bean到XML的转换。这个过程在处理XML数据时非常有用,尤其是在数据交换、序列化和持久化场景中。 1. XML到Bean转换:...

    castor castor castor 资料

    2. **映射机制**:Castor使用XML映射文件来定义Java类和XML元素之间的对应关系。通过这种方式,开发者可以自定义对象到XML的转换规则,比如字段名的映射、复杂类型的处理等。 3. **支持多种数据类型**:Castor支持...

    Castor应用示例代码-1

    1. **XML映射文件**(*.xml):定义了Java类和XML元素的映射规则,是使用Castor的关键配置文件。 2. **Java源代码**(*.java):包含示例的Java类,可能有实体类和主程序,用于演示如何使用Castor进行序列化和反序列...

    castor1.4 xsd生成java

    - 安装和配置Castor:首先,需要下载并添加Castor的JAR文件到项目类路径中。 - 创建XSD文件:定义XML数据的结构和约束。 - 使用Castor工具:运行Castor的`generate`命令,指定XSD文件的位置,它会自动生成相应的...

    castor-1.2解析XML

    是个不错的XML解析工具。 1、xml格式文件的用法,我们学过的xml有两种用法:一,作为配置文件。二、作为数据存储文件。...2、这个工具的功能:能够把xml文件存储的数据和pojo对象进行映射。我们暂且把这种叫做:OXM。

    解决Castor使用时根节点问题

    Castor,全称为Java Content Repository (JCR) API的实现之一,它是一个强大的Java对象到XML数据绑定库,常用于将Java对象序列化为XML,或者反序列化XML到Java对象。在处理XML数据时,根节点是XML文档中至关重要的...

    XML_与_Java_技术_用_Castor_进行数据绑定

    2. **映射文件**:映射文件是Castor的核心,它指定了XML元素如何映射到Java类的属性。例如,XML节点可以映射到类的字段,而XML属性可以映射到类的getter和setter方法。映射文件可以通过XML Schema(XSD)或者直接...

    将Java对象和XML自动绑定的Castor1.3API

    Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。它支持分布式目录事务处理和时间;提供处理XML、Directory、...

    xml与java对象映射

    Java工具如JAXB和XML Beans可以直接使用XSD文件生成Java类,从而实现对象到XML的严格映射。 总之,XML与Java对象的映射是Java开发中的重要环节,涉及多种技术和工具。开发者可以根据项目需求选择合适的工具,如JAXB...

Global site tag (gtag.js) - Google Analytics