boolean类型
MYSQL保存BOOLEAN
值时用1
代表TRUE
,0
代表FALSE
,boolean在MySQL里的类型为tinyint(1)
,
MySQL里有四个常量:true
,false
,TRUE
,FALSE
,它们分别代表1,0,1,0
,
mysql> **select true,false,TRUE,FALSE;
可以如下插入boolean值:insert into [xxxx(xx)] values(true),当然也可以values(1);
可以如下插入boolean值:insert into [xxxx(xx)] values(true),当然也可以values(1);
举例如下:
随便找了一个表:test
,里面只包含了一个id字段。
mysql> alter table test add isOk boolean;
mysql> insert into test(isOk) values(true);
Query OK
mysql> select isOk from test ;
MySQL没有boolean类型。这也是比较奇怪的现象。例:
create table xs
(
id int primary key,
bl boolean
)
这样是可以创建成功,但查看一下建表后的语句,就会发现,mysql把它替换成tinyint(1)。
也就是说mysql把boolean=tinyInt了,但POJO类要定义成什么类型呢?
因为惯性思维,在java类中也把它定义成type。然后在Struts中使用
这也是我今天看到别人在项目里使用三目运算符的时候,使用了这个itemCat.getIsParent()?"close":"open"
,当时第一眼是很懵逼的,因为我看了数据库中is_parent这个字段的值明明是1和0,这个怎么能用来作为三目运算符的判断标志呢?那个明明是Boolean类型的,我开始怀疑是不是三目运算符还能这样用,1代表true,0代表false???
然后我特意去百度了一下java三目运算符的使用方法,我没有记错,三目运算符的判断条件就是Boolean类型的,但是这个怎么能这么用呢?带着这个疑问我看了一下实体类中的isParent属性,发现这个属性是Boolean类型的,但是数据库里却是tinyint,于是便再次百度。
然后找到了这篇博客:https://www.cnblogs.com/lykbk/p/sdafsdfdf3454354.html
很简单,也很清晰,看了之后明白了,这原来是mysql的问题,mysql中没有boolean类型,boolean在MySQL里的类型为tinyint(1)。并且还真的是1代表true,0代表false。
啰嗦了这么多,其实就是实体类属性照常使用Boolean类型,数据库字段使用tinyint类型,内容为0和1,就可以了。
程序员小白一个,虽然每天都能遇到新的bug,但是也只有遇到bug才能不断学习。你也要加油阿!