对于oracle的数据类型,Record的封装?

hyanqing 发布于 2013/05/11 18:38
阅读 377
收藏 2

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

@JFinal 你好,想跟你请教个问题:1、Model不支持多数据源,我一个mysql,一个oracle两数据库,这个还是比较重要的。

2。用oracle数据类型问题:比如一个字段是date类型,用Record封装查找是不带时间的,RecordBuilder代码直接是rs.getObject(i);还有Record中的getStr方法,如果改成这样感觉蛮方便的:

public String getStr(String name){
    Object obj = get(name);
    if(null == obj) return "";
    else if(obj instanceof String) return (String)obj;
    else return String.valueOf(obj);
}
下面是spring处理oracle时间字段代码:

public static Object getResultSetValue(ResultSet rs, int index) throws SQLException {
		Object obj = rs.getObject(index);
		String className = null;
		if (obj != null) {
			className = obj.getClass().getName();
		}
		if (obj instanceof Blob) {
			obj = rs.getBytes(index);
		} else if (obj instanceof Clob) {
			obj = rs.getString(index);
		} else if (className != null
				&& ("oracle.sql.TIMESTAMP".equals(className) || "oracle.sql.TIMESTAMPTZ"
						.equals(className))) {
			obj = rs.getTimestamp(index);
		} else if (className != null && className.startsWith("oracle.sql.DATE")) {
			String metaDataClassName = rs.getMetaData().getColumnClassName(
					index);
			if ("java.sql.Timestamp".equals(metaDataClassName)
					|| "oracle.sql.TIMESTAMP".equals(metaDataClassName)) {
				obj = rs.getTimestamp(index);
			} else {
				obj = rs.getDate(index);
			}
		} else if (obj != null && obj instanceof java.sql.Date) {
			if ("java.sql.Timestamp".equals(rs.getMetaData()
					.getColumnClassName(index))) {
				obj = rs.getTimestamp(index);
			}
		}
		return obj;
	}
感觉还是比较实用的

加载中
0
JFinal
JFinal

    Model也可以支持多数据源,在不同数据源间切换,只需要调用 DbKit.setDataSource(...)就可以,所以在单线程处理数据的时候,Model可以支持多数据源。Model对于多数据源的支持在将来应该会实现,我已经有实现方案了,只等操刀了。

   getStr 按照你的建议改掉,在数据类型不对的时候会有安全隐患。spring 的 getResultSetValue 这个方法值得参考,我备忘一下。

0
hyanqing
hyanqing

引用来自“JFinal”的答案

    Model也可以支持多数据源,在不同数据源间切换,只需要调用 DbKit.setDataSource(...)就可以,所以在单线程处理数据的时候,Model可以支持多数据源。Model对于多数据源的支持在将来应该会实现,我已经有实现方案了,只等操刀了。

   getStr 按照你的建议改掉,在数据类型不对的时候会有安全隐患。spring 的 getResultSetValue 这个方法值得参考,我备忘一下。

回答及时,谢谢,希望jfinal越做越实用
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部