oracle 中获取number类型的字段 为什么老是需要 code.getBigDecimal("id")

消逝 发布于 2014/11/06 21:22
阅读 1K+
收藏 1
String sql = "select id, idlen,idflen,idbd,idbf from users where id = ?";
Users users = Users.dao.findById("10");
System.out.println(users.get("id").getClass());
System.out.println(users.get("idlen").getClass());
System.out.println(users.get("idflen").getClass());
System.out.println(users.get("idbd").getClass());

System.out.println(users.get("idbf").getClass());

我是连 oracle 的数据库  其中 id 字段 是number 类型 idlen 是NUMBER(6)   idflen是NUMBER(9) 可是我获取得到的 老是 BigDecimal 类型的 这样 我每次 遇到number 类型的字段 都需要 users.getBigDecimal("id").toString();  这样的 很麻烦的 

有没有什么办法 让我 不用这么麻烦 直接转成 String 类型的也可以 不用这么转

加载中
0
胡小强
胡小强
我以前的做法是直接在User对象里写个getId(),在这个方法里转换好
消逝
你这样是针对Id这个字段 但是 我可以以后会其他number类型的字段名称就不好了! 但是谢谢你帮帮回答
0
JFinal
JFinal

    转换是 jdbc 自己的行为,jfinal 并未做任何干预,也有可能是 oracle 驱动的问题,换个合试的驱动试试。还有个简单解决办法是在 Users 中写个  getInt(String) 方法覆盖 Model 中的 getInt(String):

public Integer getInt(String attr) {
  return getNumber(attr).intValue();
}

Jieven
Jieven
这个问题 一天没有统一解决方案,就永远是JFinal的痛点,用户不知道咋回事,只会怪JFinal不给力,并且我相信JFinal就是专治各种蛋疼的!
消逝
重写这个方法真的可以啊! 牛x啊! 谢谢了@JFinal
返回顶部
顶部