在数据库设计的时候,公司负责人将整型和浮点型的2位小数的金额都是用NUMBER这样的类型来存的,现在我的一个通用的DAOImpl类是这样写的:try {
Session session = SessionFactory.getSession();
tran = session.beginTransaction();
conn = session.connection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
List<FieldVO> fields = new ArrayList<FieldVO>(columnCount);
FieldVO field = null;
for (int i = 1; i <= columnCount; i++) {
field = new FieldVO();

field.setName(rsmd.getColumnLabel(i).toLowerCase());
field.setInt(rsmd.getColumnTypeName(i).contains("NUMBER"));
field.setClob(rsmd.getColumnTypeName(i).contains("CLOB"));
field.setDate(rsmd.getColumnTypeName(i).contains("DATE"));
fields.add(field);
}
rsmd = null;
Map<String, Object> row = null;
while (rs.next()) {
row = new HashMap<String, Object>(columnCount);
for (FieldVO obj : fields) {
if (obj.isInt()) {
row.put(obj.getName(), rs.getInt(obj.getName()));
} else if(obj.isClob()){
row.put(obj.getName(),Common.clobToString(rs.getClob(obj.getName())));
} else if(obj.isDate()){
row.put(obj.getName(),Common.sqlTimestampToInt(rs.getTimestamp(obj.getName())));
}else {
row.put(obj.getName(),rs.getString(obj.getName()));
}
}
rows.add(row);
}我是根据(rsmd.getColumnTypeName(i).contains("NUMBER")这样来判断是什么类型,然后再决定用getInt还是getString之类的,但是Oracle的Number如果有小数的话,这样取后就还是按照getInt来取了,到底应该怎么做啊,怎么判断Nubmer是否有小数,Oracle这个Number真是让人头疼!!!