在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;
}
}
分享到:
相关推荐
4. 使用`@TypeHandler`注解:对于实体类的属性,可以直接在字段上使用`@TypeHandler`注解指定对应的类型处理器。 通过深入理解和灵活运用`TypeHandlerCallback`,开发者可以更好地控制数据在Java应用和数据库之间的...
Ibatis提供了一系列内置的TypeHandler,如StringTypeHandler、DateTypeHandler等,同时允许自定义TypeHandler以处理特殊类型。 6. **Mapper接口和映射文件**:Mapper接口定义了数据库操作的方法,而映射文件则包含...
`CustomDisplayedEnumTypeHandler` 类需要实现`org.apache.ibatis.type.TypeHandler`接口,覆盖`setParameter`和`getResult`方法,以处理枚举值到数据库字段以及字段到枚举值的转换。 通过这种方式,我们不仅可以...
总结来说,`iBatis`的自定义数据类型机制允许我们在不支持中文的数据库中存储汉字,通过编写自定义的TypeHandler,我们可以灵活地将中文字符串转换为数据库可以接受的格式,然后在读取时恢复原状。这种方式在无法...
例如,`org.apache.ibatis.type.TypeHandler`接口定义了如何在Java对象和数据库字段之间进行转换的逻辑,这对于处理复杂的数据类型尤其有用。 2. **ibatis-sqlmap-2.jar**: 这是Ibatis的核心组件,实现了SQL映射...
7. **TypeHandler**:Ibatis的TypeHandler机制用于处理Java类型与数据库类型的转换,3.0版本对TypeHandler进行了优化,扩展性更强。 8. **插件支持**:Ibatis 3.0引入了插件机制,允许用户在运行时拦截SqlSession、...
TypeHandler是Ibatis中处理Java类型和数据库类型之间转换的关键,`TypeHandlerRegistry`可以根据Java类型或JDBC类型找到对应的TypeHandler。 8. **Plugins**: 插件机制是Ibatis的一大特色,`ibatis.util.Plugins`类...
2. **TypeHandler**:TypeHandler是Ibatis处理Java类型和数据库类型之间转换的关键接口。每个数据库字段类型都可能对应一个TypeHandler,用于将Java对象转化为SQL语句中的参数,或者将查询结果转化为Java对象。例如...
注册自定义的`TypeHandler`到Ibatis配置中是非常重要的一步。在`mybatis-config.xml`中添加以下配置: ```xml <typeHandler handler="com.example.StatusTypeHandler" javaType="com.example.Status"/> ``` ...
Ibatis-common 包含了Ibatis框架的基础工具类和通用模块,提供了诸如类型处理器(TypeHandler)、结果映射(ResultMap)等核心功能。TypeHandler是Ibatis中用于处理Java类型与数据库类型的转换,确保数据在Java对象...
6. **TypeHandler**和**DataExchange**:在参数映射过程中,TypeHandler负责Java类型到数据库类型的转换,DataExchange则完成参数值的复制。 7. **SqlMapSession的创建与释放**:SqlMapSession负责数据库连接的创建...
Ibatis提供了一些预定义的TypeHandler,也可以自定义。 9. **事务管理**: Ibatis支持手动和自动两种事务管理模式。手动模式下,开发者需要自己控制事务的开启、提交和回滚;自动模式下,可以通过Spring等框架进行...
8. **类型处理器**:MyBatis的TypeHandler接口提供了更丰富的类型转换,避免了在SQL语句中处理复杂数据类型时的困扰。 9. **缓存机制**:MyBatis提供了一级缓存和二级缓存,可以提高数据查询的效率。 10. **集成...
此外,可能会讲解如何使用Executor执行器进行批量操作,以及如何利用TypeHandler处理自定义数据类型。 通过阅读这三份文档,你可以系统地学习到iBatis框架的各个方面,从基本的配置和使用,到高级的优化和扩展。...
此外,Ibatis还提供了TypeHandler机制,用于自定义Java类型与数据库类型的转换,解决一些特殊类型的数据处理问题。 与Hibernate相比,Ibatis的优势在于对SQL的直接控制,使得开发者可以充分利用SQL的功能,优化...
4. **反射和类型处理**:Ibatis在处理对象与SQL映射时,会用到反射和类型处理机制,如TypeHandler接口,用于自定义类型转换。 5. **缓存支持**:Ibatis的本地缓存机制部分实现位于此包中,它可以提高数据读取速度,...
2. **ibatis-common-2.jar**:这个包提供了Ibatis框架的一系列通用工具和类,包括类型处理器(TypeHandler)用于处理Java类型与数据库类型的转换,以及ResultHandler结果集处理器,用于处理查询结果。此外,还包括了...
7. **TypeHandler**:类型处理器用于处理Java类型的转换,确保Java对象和数据库之间的数据类型匹配。 8. **插件机制**:iBATIS提供了一种插件机制,允许用户自定义拦截器来扩展其功能。 通过深入研究iBATIS 2.3的...
8. **TypeHandler**:类型处理器是处理Java类型与JDBC类型之间转换的接口,例如将String转换为VARCHAR,Integer转换为INTEGER等。 9. **Mapper接口和Mapper XML文件**:在Ibatis 3中,推荐使用Mapper接口配合XML...