mybatis 遇到枚举类无法获得有效值

今天在使用mybatis从数据库中拿数据的时候发现数据的枚举字段无法取出枚举类,其他的量都能够取到有效值。

在同样的环境下,另一个服务中的类似代码却能够正常取出枚举类,这就让事情显得离奇了起来,把两对代码进行了详细的比较,但是我和前辈都没有发现代码的问题,因为两段代码从枚举类到mybatis的使用方法都是一样的。

一直到我们突发奇想可能不是数据库的问题,终于触及了这次问题的真正成因,在数据库中枚举类所对应的字段因为想要节省空间被设成了tinyint(1),因为布尔型和枚举类基本都只需要一位整数就能储存了,但是我们没有考虑到mysql中tinyint(1)和布尔类型之间的对应联系是特有的,于是在使用mybatis取对象的时候,本应是枚举类的变量其值其实是布尔类型,由于无法放入枚举类变量中,所以表现出来就是该枚举变量值为空,就好像没有取出来一样。

 

总结一下:tinyint(1)在mysql数据库中与java的布尔类型有特殊的对应关系,就算是使用tinyint(2)也不会造成上述的问题。

 

P.S.:后来我们还是沿用了以前的设置习惯把枚举类设成了int(11)类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值