前言:今天在做jfinal和mysql的数据转换时出现了java.lang.Boolean cannot be cast to java.lang.Integer错误,而之前我就遇到过这样的问题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 |
然后,针对以上内容,我想说明以下几点:
0002和0009
注意0002中的tinyint(n) n > 1,在mysql中,一般为了表示状态,我们可能都会选择tinyint,比如status,我们用0表示未审核,1表示审核,2表示拒绝,这个时候我们依然会将n设置为1,但是到了jfinal进行转换的时候,如果你还是用getInt()方法,那么就会抛出java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.Integer。
所以,如果是这种情况,请设置n>1。
当然这也为我们提供了方便,如果你用tinyint(1)表示is_delete,0表示未删除,1表示已删除。那么jfinal的getBoolean还是够方便。
0003和0004
这里请注意到unsigned ,在数据库中,我们很少用-1、-2、-3、… 、-100000等来表示数据,那么我们的mysql中就可能把数据类型设置为“无符号(unsigned)”,那么此时请一定要注意“unsigned int”就不能再使用getInt()来完成转换了,“unsigned bigint”就不能使用getLong()转换,而要替换成对应的getLong()和getBigInteger()。
版权声明:本站博客均为qing_gee原创文章,若您需要引用、转载,只需要注明来源及原文链接即可。
- 1楼qingluohuaxiang昨天 14:31
- 好复杂