@Jfinal 老大提供的解決方法
當數據庫字段為 int 型(有符號int型),但是如果在 sql 中使用了某些函數,jdbc 會自動轉型為 long,例如:select sum(money) from account where accountId = 123。這個行為是 jdbc自動做的,目的是為了防止數據溢出,因為在本例中 money 本來是 int 型,但是 sum(money) 以后很可能數值會超過 java Integer.MAX_VALUE值。另一種 int 自動轉 long 型是因為字段使用是無符號 int 型,這兩種自動轉型都是 jdbc 自動的,jfinal 未做任何干預。至於 int 型可以使用 getStr 讀取出來,那必定是值為 null, 否則肯定會拋出類型轉換異常。
解決的辦法通常兩個:
1:預知可能的轉型,使用正確的類型變量去接收值,例如用 Long變量去接收 select sum(xxx)值。
2:使用 getNumber(attr).intValue() 確切一定得到 Integer 值,或者使用 getNumber(attr).longValue() 確切一定得到 Long 值。