mysql和jfinal的区别_mysql与JFinal的数据关系-阿里云开发者社区
mysql與jfinal在使用過程中,一定要弄清楚數據關系,否則容易發生類型不匹配的錯誤。
一、關系整理
為此,我根據jfinal的源碼和mysql的數據字段類型,整理列表如下:
mysql
jfinal
例子
編號
varchar, char, enum, set, text, tinytext, mediumtext, longtext
String
getStr(“xxx”)
0001
int, integer, tinyint(n) n > 1, smallint, mediumint
int
getInt(“xxx”)
0002
bigint, unsign int
long
getLong(“xxx”)
0003
unsigned bigint
BigInteger
getBigInteger(“xxx”)
0004
date, year
Date
getDate(“xxx”)
0005
time
Time
getTime(“xxx”)
0006
timestamp, datetime
Timestamp
getTimestamp(“xxx”)
0006
real, double
Double
getDouble(“xxx”)
0007
float
Float
getFloat(“xxx”)
0008
bit, tinyint(1)
Boolean
getBoolean(“xxx”)
0009
decimal, numeric
BigDecimal
getBigDecimal(“xxx”)
0010
binary, varbinary, tinyblob, blob, mediumblob, longblob
byte[]
getBytes(“xxx”)
0011
extends from Number
Number
getNumber(“xxx”)
0012
二、tinyint
在mysql中,tinyint(n)中的n對jfinal的數據轉換有影響:
n>1時,jfinal要使用getInt。
n=1時,jfinal要使用getBoolean。
三、unsigned
在mysql中unsigned表示有無符號,舉例來說:
unsigned int,表示數據>0,不包含負數,那么jfinal就要使用getLong。
unsigned bigint,表示數據>0,不包含負數,那么jfinal就要使用getBigInteger。
四、int(m)
關于mysql中int(m)中的m,這當然包含bigint(m)的m。
int[(m)]
有符號值:-2147683648 到2147683647(- 231 到231- 1)
無符號值:0到4294967295(0 到232 - 1) 4個字節
這意味著,如果你的數據字段是這樣子的話
`uid` int(11) NOT NULL DEFAULT '0' COMMENT '用戶id'
那么m=11是正確的,因為考慮到“-”(負數),長度最大為11位。
而如果你的數據字段是這樣子的話
`uid` int(11) unsigned NOT NULL COMMENT '用戶id'
那么m=11是沒有意義的,因為最大長度為10位,如果你比較專業的話,此時,你的數據字段就應該是這樣子的
`uid` int(10) unsigned NOT NULL COMMENT '用戶id'
五、jfinal的api
只看如下代碼:
/**
* Get attribute of mysql type: int, integer, tinyint(n) n > 1, smallint, mediumint
*/
public Integer getInt(String attr) {
return (Integer)attrs.get(attr);
}
/**
* Get attribute of mysql type: bigint, unsign int
*/
public Long getLong(String attr) {
return (Long)attrs.get(attr);
}
方法很詳細的介紹了應該匹配哪一種mysql數據類型。
笑對現實的無奈,不能后退的時候,不再傍徨的時候,永遠向前 路一直都在──陳奕迅《路一直都在》
本文出自:【沉默王二的博客】
總結
以上是生活随笔為你收集整理的mysql和jfinal的区别_mysql与JFinal的数据关系-阿里云开发者社区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 调整linux块大小,Linux系统之更
- 下一篇: java的svn插件maver_项目版本