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 sqlMapConfigPUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig><settingscacheModelsEnabled="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>