`

ibatis的joda相关的TypeHandler

阅读更多
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>
分享到:
评论

相关推荐

    使用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相关的common,dao,sqlmap包

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

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

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

    ibatis 相关使用文档及安装包ibatis 相关使用文档及安装包

    这个压缩包包含了iBATIS的相关使用文档和安装包,是学习和使用iBATIS的重要参考资料。 《iBATIS-SqlMaps-2.pdf》可能是关于iBATIS SQL映射器的详细指南,它会介绍如何编写SQL Map配置文件,这些文件定义了数据库...

    ibatis开发包(common+sqlmap+dao)

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

    ibatis.util包

    9. **Exceptions**: `ibatis.util.Exceptions`类提供了一系列与Ibatis相关的异常,如`IOException`和`SQLException`的包装,便于统一处理错误。 在EMIS系统中,`ibatis.util`包的缺失可能会导致以下问题: - SQL...

    最新的ibatis 3.0(包含源码)

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

    ibatis总结 ibatis ibatis ibatis ibatis

    Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...

    ibatis-common.jar包

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

    ibatis资料ibatis资料

    1. **《iBATIS in Action》**: 这通常是一本关于iBATIS的书籍,可能深入介绍了iBATIS的原理、配置、使用方法以及最佳实践,对于学习和理解iBATIS非常有帮助。 2. **《ibatis Guide》**: 这可能是iBATIS的官方指南...

    ibatis 支持枚举类型

    在Java开发中,Ibatis作为一个...通过自定义`TypeHandler`,我们可以将枚举类与数据库字段之间进行无缝转换,使代码更易于理解和维护。同时,这种处理方式也适用于其他类似场景,比如处理日期时间类型、自定义对象等。

    ibatis 相关jar包

    这个压缩包包含的“ibatis 相关jar包”是用于在Java Web项目中集成Ibatis所必需的库文件。 1. **Ibatis简介**: Ibatis 是由Clinton Begin 创建的一个开源项目,最初叫做MyBatis,后来更名为Ibatis。它的核心理念...

    iBATIS框架源码剖析-任钢

    8. **TypeHandler**:iBATIS提供了TypeHandler接口,用于处理Java类型与数据库类型之间的转换。开发者可以根据需求自定义TypeHandler,以处理特定类型的转换。 9. **Transaction管理**:iBATIS支持编程式和声明式两...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...

    iBATIS 框架简介

    2. iBATIS解析SqlMap配置文件,获取Statement和相关的ParameterMap, ResultMap。 3. 根据Statement中的SQL语句,解析参数并保存在Map中,依据ParameterMap构建TypeHandler对象。 4. 使用DataExchange复制参数值到...

    Ibatis jar

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

    iBATIS 级联iBATIS 级联

    iBATIS 级联iBATIS 级联iBATIS 级联

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    《深入解析iBatis源码》 iBatis,一个优秀的Java持久层框架,以其轻量级、灵活的特性在众多ORM(Object-Relational Mapping)框架中独树一帜。iBatis的核心在于它的SQL映射机制,它将数据库操作与业务逻辑解耦,...

Global site tag (gtag.js) - Google Analytics