ibatis返回Date不带时分秒

ibatis从oracle查询的时候,返回的类型是java.sql.Date,这个类型是不带时分秒的,我们只有在写sql的时候用to_char来转换。

我在项目中是返回的HashMap

<select id="" parameterClass="map" resultClass="java.util.HashMap">


实际上是可以解决的,通过配置一个typeHandler,让TypeHandler在转换的时候把java.sql.Date转换成java.sql.Timestamp,这样就能返回精确的时间了

在sqlMapConfig中配一下:


<typeHandler javaType="object" callback="xxx.xxx.OracleObjectTypeHandler"/>

代码如下

public class OracleObjectTypeHandler extends BaseTypeHandler implements
		TypeHandler {
	public Object getResult(ResultSet rs, String columnName)
			throws SQLException {
		Object object = rs.getObject(columnName);
		if (rs.wasNull()) {
			return null;
		} else {
			boolean b = object instanceof java.sql.Date;
			if (b)
				object = new Date(rs.getTimestamp(columnName).getTime());
			return object;
		}
	}

	public Object getResult(ResultSet rs, int columnIndex) throws SQLException {
		Object object = rs.getObject(columnIndex);
		if (rs.wasNull()) {
			return null;
		} else {
			boolean b = object instanceof java.sql.Date;
			if (b)
				object = new Date(rs.getTimestamp(columnIndex).getTime());
			return object;
		}
	}

	public Object getResult(CallableStatement cs, int columnIndex)
			throws SQLException {
		Object object = cs.getObject(columnIndex);
		if (cs.wasNull()) {
			return null;
		} else {
			boolean b = object instanceof java.sql.Date;
			if (b)
				object = new Date(cs.getTimestamp(columnIndex).getTime());
			return object;
		}
	}

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

	public void setParameter(PreparedStatement ps, int i, Object parameter,
			String jdbcType) throws SQLException {
		ps.setObject(i, parameter);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值