`

ibatis TypeHandler

阅读更多

在sqlMapConfig.xml中定义,对于所有类型为String 的字符串都进行转码

<typeAlias type="gov.tax.wfwz.ibatis.EncodeTypeHandler" alias="ENCODE"/>
	<!-- 全局配置,DTO中所有的String都会转码 -->
<typeHandler callback="ENCODE" javaType="java.lang.String"/>

 TypeHandlerCallback的定义

public interface TypeHandlerCallback {
  public void setParameter(ParameterSetter setter, Object parameter)
      throws SQLException;
  public Object getResult(ResultGetter getter)
      throws SQLException;
  public Object valueOf(String s);
}

 对于自己的TypeHandler必须实现TypeHandlerCallback 接口

public class EncodeTypeHandler implements TypeHandlerCallback{    

	public Object getResult(ResultGetter getter) throws SQLException {    
		String str = null;    
		if (getter.getString() != null) {
			try {    
				str = new String(getter.getString().getBytes("ISO-8859-1"), "GBK");    
			} catch (UnsupportedEncodingException e) {    
				LogSupport.getErrorLogger().error("编码转换失败!",e);
				str = getter.getString();    
			}    
		}
		return str;    
	}    

	public void setParameter(ParameterSetter setter, Object parameter) throws SQLException {  
		String str = null;    
		if (parameter != null) {
			try {    
				str = new String(((String)parameter).getBytes("GBK"), "ISO-8859-1");    
			} catch (UnsupportedEncodingException e) {    
				LogSupport.getErrorLogger().error("编码转换失败!",e);    
				str = (String)parameter;    
			}    
		}
		setter.setString(str);    
	}   

	public Object valueOf(String s) {    
		return s;    
	}    
}

 

分享到:
评论
2 楼 dark510 2010-10-12  
想不到你喜欢写blog,我很久不关心这种东西了。 ——清波
1 楼 dark510 2010-10-12  
难怪我觉得这代码那么眼熟……

相关推荐

    使用iBatis的类型处理器TypeHandlerCallback

    4. 使用`@TypeHandler`注解:对于实体类的属性,可以直接在字段上使用`@TypeHandler`注解指定对应的类型处理器。 通过深入理解和灵活运用`TypeHandlerCallback`,开发者可以更好地控制数据在Java应用和数据库之间的...

    ibatis源码

    Ibatis提供了一系列内置的TypeHandler,如StringTypeHandler、DateTypeHandler等,同时允许自定义TypeHandler以处理特殊类型。 6. **Mapper接口和映射文件**:Mapper接口定义了数据库操作的方法,而映射文件则包含...

    Mybatis中自定义TypeHandler处理枚举详解

    `CustomDisplayedEnumTypeHandler` 类需要实现`org.apache.ibatis.type.TypeHandler`接口,覆盖`setParameter`和`getResult`方法,以处理枚举值到数据库字段以及字段到枚举值的转换。 通过这种方式,我们不仅可以...

    ibatis自定义数据类型在不支持中文的数据库存储汉字

    总结来说,`iBatis`的自定义数据类型机制允许我们在不支持中文的数据库中存储汉字,通过编写自定义的TypeHandler,我们可以灵活地将中文字符串转换为数据库可以接受的格式,然后在读取时恢复原状。这种方式在无法...

    ibatis开发包(common+sqlmap+dao)

    例如,`org.apache.ibatis.type.TypeHandler`接口定义了如何在Java对象和数据库字段之间进行转换的逻辑,这对于处理复杂的数据类型尤其有用。 2. **ibatis-sqlmap-2.jar**: 这是Ibatis的核心组件,实现了SQL映射...

    最新的ibatis 3.0(包含源码)

    7. **TypeHandler**:Ibatis的TypeHandler机制用于处理Java类型与数据库类型的转换,3.0版本对TypeHandler进行了优化,扩展性更强。 8. **插件支持**:Ibatis 3.0引入了插件机制,允许用户在运行时拦截SqlSession、...

    ibatis.util包

    TypeHandler是Ibatis中处理Java类型和数据库类型之间转换的关键,`TypeHandlerRegistry`可以根据Java类型或JDBC类型找到对应的TypeHandler。 8. **Plugins**: 插件机制是Ibatis的一大特色,`ibatis.util.Plugins`类...

    ibatis-common.jar包

    2. **TypeHandler**:TypeHandler是Ibatis处理Java类型和数据库类型之间转换的关键接口。每个数据库字段类型都可能对应一个TypeHandler,用于将Java对象转化为SQL语句中的参数,或者将查询结果转化为Java对象。例如...

    ibatis 支持枚举类型

    注册自定义的`TypeHandler`到Ibatis配置中是非常重要的一步。在`mybatis-config.xml`中添加以下配置: ```xml &lt;typeHandler handler="com.example.StatusTypeHandler" javaType="com.example.Status"/&gt; ``` ...

    ibatis相关的common,dao,sqlmap包

    Ibatis-common 包含了Ibatis框架的基础工具类和通用模块,提供了诸如类型处理器(TypeHandler)、结果映射(ResultMap)等核心功能。TypeHandler是Ibatis中用于处理Java类型与数据库类型的转换,确保数据在Java对象...

    iBATIS 框架简介

    6. **TypeHandler**和**DataExchange**:在参数映射过程中,TypeHandler负责Java类型到数据库类型的转换,DataExchange则完成参数值的复制。 7. **SqlMapSession的创建与释放**:SqlMapSession负责数据库连接的创建...

    ibatis配置

    Ibatis提供了一些预定义的TypeHandler,也可以自定义。 9. **事务管理**: Ibatis支持手动和自动两种事务管理模式。手动模式下,开发者需要自己控制事务的开启、提交和回滚;自动模式下,可以通过Spring等框架进行...

    从iBatis迁移到MyBatis

    8. **类型处理器**:MyBatis的TypeHandler接口提供了更丰富的类型转换,避免了在SQL语句中处理复杂数据类型时的困扰。 9. **缓存机制**:MyBatis提供了一级缓存和二级缓存,可以提高数据查询的效率。 10. **集成...

    iBatis.rar 开发文档

    此外,可能会讲解如何使用Executor执行器进行批量操作,以及如何利用TypeHandler处理自定义数据类型。 通过阅读这三份文档,你可以系统地学习到iBatis框架的各个方面,从基本的配置和使用,到高级的优化和扩展。...

    Ibatis jar

    此外,Ibatis还提供了TypeHandler机制,用于自定义Java类型与数据库类型的转换,解决一些特殊类型的数据处理问题。 与Hibernate相比,Ibatis的优势在于对SQL的直接控制,使得开发者可以充分利用SQL的功能,优化...

    ibatis基本架包

    4. **反射和类型处理**:Ibatis在处理对象与SQL映射时,会用到反射和类型处理机制,如TypeHandler接口,用于自定义类型转换。 5. **缓存支持**:Ibatis的本地缓存机制部分实现位于此包中,它可以提高数据读取速度,...

    ibatis的3个jar包.rar

    2. **ibatis-common-2.jar**:这个包提供了Ibatis框架的一系列通用工具和类,包括类型处理器(TypeHandler)用于处理Java类型与数据库类型的转换,以及ResultHandler结果集处理器,用于处理查询结果。此外,还包括了...

    ibatis2.3源码

    7. **TypeHandler**:类型处理器用于处理Java类型的转换,确保Java对象和数据库之间的数据类型匹配。 8. **插件机制**:iBATIS提供了一种插件机制,允许用户自定义拦截器来扩展其功能。 通过深入研究iBATIS 2.3的...

    ibatis 3 核心包

    8. **TypeHandler**:类型处理器是处理Java类型与JDBC类型之间转换的接口,例如将String转换为VARCHAR,Integer转换为INTEGER等。 9. **Mapper接口和Mapper XML文件**:在Ibatis 3中,推荐使用Mapper接口配合XML...

Global site tag (gtag.js) - Google Analytics