@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; }感觉还是比较实用的
Model也可以支持多数据源,在不同数据源间切换,只需要调用 DbKit.setDataSource(...)就可以,所以在单线程处理数据的时候,Model可以支持多数据源。Model对于多数据源的支持在将来应该会实现,我已经有实现方案了,只等操刀了。
getStr 按照你的建议改掉,在数据类型不对的时候会有安全隐患。spring 的 getResultSetValue 这个方法值得参考,我备忘一下。
引用来自“JFinal”的答案
Model也可以支持多数据源,在不同数据源间切换,只需要调用 DbKit.setDataSource(...)就可以,所以在单线程处理数据的时候,Model可以支持多数据源。Model对于多数据源的支持在将来应该会实现,我已经有实现方案了,只等操刀了。
getStr 按照你的建议改掉,在数据类型不对的时候会有安全隐患。spring 的 getResultSetValue 这个方法值得参考,我备忘一下。