mysql与JFinal的数据关系

mysql与jfinal在使用过程中,一定要弄清楚数据关系,否则容易发生类型不匹配的错误。

一、关系整理

为此,我根据jfinal的源码和mysql的数据字段类型,整理列表如下:

mysqljfinal例子编号
varchar, char, enum, set, text, tinytext, mediumtext, longtextStringgetStr(“xxx”)0001
int, integer, tinyint(n) n > 1, smallint, mediumintintgetInt(“xxx”)0002
bigint, unsign intlonggetLong(“xxx”)0003
unsigned bigintBigIntegergetBigInteger(“xxx”)0004
date, yearDategetDate(“xxx”)0005
timeTimegetTime(“xxx”)0006
timestamp, datetimeTimestampgetTimestamp(“xxx”)0006
real, doubleDoublegetDouble(“xxx”)0007
floatFloatgetFloat(“xxx”)0008
bit, tinyint(1)BooleangetBoolean(“xxx”)0009
decimal, numericBigDecimalgetBigDecimal(“xxx”)0010
binary, varbinary, tinyblob, blob, mediumblob, longblobbyte[]getBytes(“xxx”)0011
extends from NumberNumbergetNumber(“xxx”)0012

二、tinyint

在mysql中,tinyint(n)中的n对jfinal的数据转换有影响:

  1. n>1时,jfinal要使用getInt。
  2. n=1时,jfinal要使用getBoolean。

三、unsigned

在mysql中unsigned表示有无符号,举例来说:

  1. unsigned int,表示数据>0,不包含负数,那么jfinal就要使用getLong。
  2. 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数据类型。

笑对现实的无奈,不能后退的时候,不再傍徨的时候,永远向前 路一直都在──陈奕迅《路一直都在》
本文出自:【沉默王二的博客

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默王二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值