标签:11 int 数据类型 unsigned mysql JFinal 数据
前言:很荣幸在今天遇到一个小问题,关于JFinal的getInt()、getLong()方法和mysql的数据类型关联。如果mysql数据库中int类型字段使用了unsigned,那么JFinal就要使用getLong(),如果int类型字段没有使用unsigned,那么JFinal就要使用getInt(),否则就会出现类型不匹配错误。了解mysql的数据类型
首先,我们来了解一下mysql的数据类型,这里我们只看int类型的 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'
如果你想了解更多的mysql数据内幕,请查看 http://www.cnblogs.com/kwishly/archive/2012/04/19/2457450.html文章。
了解JFinal数据类型
同样,这里我们只关注getLong()和getInt()方法。/**
* 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);
}
注意unsigned int和int之间的区别。
Java的int数据
System.out.println("2147683647");
System.out.println("4294967295");
System.out.println(Integer.MAX_VALUE);//2147483647
这样你就明白了JFinal为什么要那样设计。
总结:小知识,长见识。
标签:11,int,数据类型,unsigned,mysql,JFinal,数据 来源: https://blog.51cto.com/u_2324584/2935283
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。