【JFinal】ActiveRecord 问题

00oo 发布于 2014/07/02 15:13
阅读 782
收藏 0

JFinal的AvtiveRecord模式访问mysql数据库,在获取表数据的时候,如果表的字段类型为tinyint,则会直接将内容转化为boolean类型,是这样吗?

据我了解如果类型设置为tinyint,长度定为1,可以插入的范围是0~255,JFinal这样转化是出于什么考虑呢?

不知道我说的对不对,请@JFinal 讲解下!

加载中
1
糊搞
转化的类型是由数据库驱动决定的,JFinal没有做干预。
0
JFinal
JFinal
看一下 Model.java 源代码中的 get 系列方法中的注视,详细说明了对应关系,转换是 JDBC 自动行为
0
00oo
00oo

引用来自“JFinal”的评论

看一下 Model.java 源代码中的 get 系列方法中的注视,详细说明了对应关系,转换是 JDBC 自动行为
/**
* Get attribute of mysql type: bit, tinyint(1)
*/
public Boolean getBoolean(String attr) {
	return (Boolean)attrs.get(attr);
}

看了Model.java注释里是这么写的,这里是直接封装jdbc驱动的方法,如上面那哥们说的,是这样的么?



00oo
00oo
回复 @JFinal : 恩,我看到了,里面的说明很详细,多谢这么认真的解答!
JFinal
JFinal
注释说明:mysql 两种数据类型 bit 与 tinyint 会自动转成 java 的 Boolean 类型,注意这里的 tinyint 必须是长度为 1,超过 1 会转成 Integer
00oo
00oo
回复 @糊搞 : 夸我聪明。。。聪明点的人都是直接看源码,学习加提升,我不行,看源码太慢。本来想直接把源码导进现有工程,出错直接debug进源码看,时间有限不能边学边做,下次再仔细看源码!
糊搞
对的,你真聪明,,,以后多看源码,可以解决很多自己的疑问。。。
0
清风-蓝魔泪
清风-蓝魔泪

引用来自“JFinal”的评论

看一下 Model.java 源代码中的 get 系列方法中的注视,详细说明了对应关系,转换是 JDBC 自动行为

现在我这边有一个情况是这样的

订单状态有5种,0,1,2,3,4

在数据库中的记录的字段类型是 tinyint(1)

现在我取这个状态的时候,就变成boolean了,也就是说我只能区分0和非0了,那另外几个状态我就没法拿了

这种情况怎么办?

PS.我直接用get("ststus")方法,我调试的时候,看到他类型就是boolean的,应该是mysql驱动自动给我转成这样了

那这种情况怎么玩,不会让我改表结构吧。。。。

0
JFinal
JFinal

引用来自“清风-蓝魔泪”的评论

引用来自“JFinal”的评论

看一下 Model.java 源代码中的 get 系列方法中的注视,详细说明了对应关系,转换是 JDBC 自动行为

现在我这边有一个情况是这样的

订单状态有5种,0,1,2,3,4

在数据库中的记录的字段类型是 tinyint(1)

现在我取这个状态的时候,就变成boolean了,也就是说我只能区分0和非0了,那另外几个状态我就没法拿了

这种情况怎么办?

PS.我直接用get("ststus")方法,我调试的时候,看到他类型就是boolean的,应该是mysql驱动自动给我转成这样了

那这种情况怎么玩,不会让我改表结构吧。。。。

   来个 tinyint(2) 即可
返回顶部
顶部