@Jfinal 老大提供的解決方法 當資料庫欄位為 int 型(有符號int型),但是如果在 sql 中使用了某些函數,jdbc 會自動轉型為 long,例如:select sum(money) from account where accountId = 123。這個行為是 jdbc自動做的,目的 ...
@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 值。