ibatis默认的没有提供joda DateTime的typeHandler,自己写一个。
import java.sql.SQLException;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import com.ibatis.sqlmap.client.extensions.ParameterSetter;
import com.ibatis.sqlmap.client.extensions.ResultGetter;
import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback;
/**
* jdbcType: "DATETIME" <-> javaType: "org.joda.time.DateTime"
*
* @author 应卓
*
*/
public class DateTimeTypeHandlerCallback implements TypeHandlerCallback {
private static DateTimeFormatter FORMAT = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
public Object getResult(ResultGetter getter) throws SQLException {
DateTime date = new DateTime(getter.getTimestamp());
return date;
}
public void setParameter(ParameterSetter setter, Object obj) throws SQLException {
if (obj instanceof DateTime) {
DateTime date = (DateTime) obj;
setter.setString(date.toString(FORMAT));
// setter.setTimestamp(new Timestamp(date.getMillis()));
} else {
throw new IllegalArgumentException("Illegal Date object");
}
}
public Object valueOf(String string) {
DateTime date = FORMAT.parseDateTime(string);
return date;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="false"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="true" />
<typeHandler javaType="org.joda.time.DateTime" callback="x.y.z.DateTimeTypeHandlerCallback"/>
</sqlMapConfig>
分享到:
相关推荐
4. 使用`@TypeHandler`注解:对于实体类的属性,可以直接在字段上使用`@TypeHandler`注解指定对应的类型处理器。 通过深入理解和灵活运用`TypeHandlerCallback`,开发者可以更好地控制数据在Java应用和数据库之间的...
Ibatis提供了一系列内置的TypeHandler,如StringTypeHandler、DateTypeHandler等,同时允许自定义TypeHandler以处理特殊类型。 6. **Mapper接口和映射文件**:Mapper接口定义了数据库操作的方法,而映射文件则包含...
`CustomDisplayedEnumTypeHandler` 类需要实现`org.apache.ibatis.type.TypeHandler`接口,覆盖`setParameter`和`getResult`方法,以处理枚举值到数据库字段以及字段到枚举值的转换。 通过这种方式,我们不仅可以...
Ibatis-common 包含了Ibatis框架的基础工具类和通用模块,提供了诸如类型处理器(TypeHandler)、结果映射(ResultMap)等核心功能。TypeHandler是Ibatis中用于处理Java类型与数据库类型的转换,确保数据在Java对象...
总结来说,`iBatis`的自定义数据类型机制允许我们在不支持中文的数据库中存储汉字,通过编写自定义的TypeHandler,我们可以灵活地将中文字符串转换为数据库可以接受的格式,然后在读取时恢复原状。这种方式在无法...
例如,`org.apache.ibatis.type.TypeHandler`接口定义了如何在Java对象和数据库字段之间进行转换的逻辑,这对于处理复杂的数据类型尤其有用。 2. **ibatis-sqlmap-2.jar**: 这是Ibatis的核心组件,实现了SQL映射...
9. **Exceptions**: `ibatis.util.Exceptions`类提供了一系列与Ibatis相关的异常,如`IOException`和`SQLException`的包装,便于统一处理错误。 在EMIS系统中,`ibatis.util`包的缺失可能会导致以下问题: - SQL...
7. **TypeHandler**:Ibatis的TypeHandler机制用于处理Java类型与数据库类型的转换,3.0版本对TypeHandler进行了优化,扩展性更强。 8. **插件支持**:Ibatis 3.0引入了插件机制,允许用户在运行时拦截SqlSession、...
Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...
2. **TypeHandler**:TypeHandler是Ibatis处理Java类型和数据库类型之间转换的关键接口。每个数据库字段类型都可能对应一个TypeHandler,用于将Java对象转化为SQL语句中的参数,或者将查询结果转化为Java对象。例如...
这个压缩包包含的“ibatis 相关jar包”是用于在Java Web项目中集成Ibatis所必需的库文件。 1. **Ibatis简介**: Ibatis 是由Clinton Begin 创建的一个开源项目,最初叫做MyBatis,后来更名为Ibatis。它的核心理念...
在Java开发中,Ibatis作为一个...通过自定义`TypeHandler`,我们可以将枚举类与数据库字段之间进行无缝转换,使代码更易于理解和维护。同时,这种处理方式也适用于其他类似场景,比如处理日期时间类型、自定义对象等。
8. **TypeHandler**:iBATIS提供了TypeHandler接口,用于处理Java类型与数据库类型之间的转换。开发者可以根据需求自定义TypeHandler,以处理特定类型的转换。 9. **Transaction管理**:iBATIS支持编程式和声明式两...
这个压缩包包含了iBATIS的相关使用文档和安装包,是学习和使用iBATIS的重要参考资料。 《iBATIS-SqlMaps-2.pdf》可能是关于iBATIS SQL映射器的详细指南,它会介绍如何编写SQL Map配置文件,这些文件定义了数据库...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...
2. iBATIS解析SqlMap配置文件,获取Statement和相关的ParameterMap, ResultMap。 3. 根据Statement中的SQL语句,解析参数并保存在Map中,依据ParameterMap构建TypeHandler对象。 4. 使用DataExchange复制参数值到...
此外,Ibatis还提供了TypeHandler机制,用于自定义Java类型与数据库类型的转换,解决一些特殊类型的数据处理问题。 与Hibernate相比,Ibatis的优势在于对SQL的直接控制,使得开发者可以充分利用SQL的功能,优化...
《深入解析iBatis源码》 iBatis,一个优秀的Java持久层框架,以其轻量级、灵活的特性在众多ORM(Object-Relational Mapping)框架中独树一帜。iBatis的核心在于它的SQL映射机制,它将数据库操作与业务逻辑解耦,...
Ibatis提供了一些预定义的TypeHandler,也可以自定义。 9. **事务管理**: Ibatis支持手动和自动两种事务管理模式。手动模式下,开发者需要自己控制事务的开启、提交和回滚;自动模式下,可以通过Spring等框架进行...
8. **类型处理器**:MyBatis的TypeHandler接口提供了更丰富的类型转换,避免了在SQL语句中处理复杂数据类型时的困扰。 9. **缓存机制**:MyBatis提供了一级缓存和二级缓存,可以提高数据查询的效率。 10. **集成...