• Mysql中,如果使用tinyint(1)来设置表中字段的数据类型,可以存储0和1;在Java中使用Boolean来接收,0映射为false,1映射为true。
  • Mysql中,如果使用tinyint来设置字段的数据类型,映射到Java数据类型中,不仅可以使用上面的Boolean类型来接收,也可以使用Java中int类型来接收。在MySQL中存储的tinyint(1)类型数据,不仅可以存储0和1,任意一个一位自然数都可以(0-9)。不过,当这样(tinyint(1))使用时,0映射为Java中的Boolean类型false,1-9数字都将映射为true。
  • tinyint(1)与tinyint(4)的区别:tinyint默认的位数是4位,但是我们设计数据库就算设置成tinyint(1)[(1)表示数据以一个长度来显示],但也不能影响它实际占了4个存储空间。tinyint(1) 和 tinyint(4)中的1和4只有字段指定zerofill(零填充)时才有效,不足位数用0来填充。其实他们的存储空间大小是一样的。如tinyint(4),如果实际值是2,如果列指定了zerofill,查询结果就是0002,左边用0来填充。
  • 非0和1存储场景:
    字段:status(值为1,2,3,4)
    类型:tinyint 长度:1(有符号的)
    实际结果:查询出来的数据列表,状态值不管是1、2、3还是4,都是"boolean true"
    期望结果:单纯的查询出数据列表取出数字。

问题分析:
由于MySql中没有boolean类型,所以会用到tinyint[1]类型来表示,在mysql中boolean=tinyint[1]

解决方式:
tinyint类型长度设置问题,当我把长度改成4时,查询结果就是我的期望结果了。

其他思路:
在不改变类型长度下,修改查询sql语句,在需要执行的sql语句中,把这个状态字段*1,结果就会得到数据库存的值了(ps:要给这个修改后的状态字段加别名,不然查询出来的就是status*1 => ‘1’)


总结:

  1. 只存储0和1,表示true或false,则使用tinyint(1)
  2. 存储状态信息1、2、3、4等,为使查询出的数据是原始的数字,有两种方式:
    A、修改tinyint类型的长度,使用tinyint(4)
    B、在查询的sql语句上面做修改

    所以由这里可以看出,当使用tinyint(1)来存储超过0,1两个以外的值,比如存储2,那这个2就是脏数据。如果要2有效,就用tinyint(4)。tinyint(1)只适用于存储0和1两个值,也即真和假,true和false。
    一般情况,如果存的是纯数字的话,建议用tinyint,如果是字符串,且是固定长度的,建议用char。


bit & tinyint:

两者都可以表示Java中的布尔值。
如果没有扩展需求,仅仅表示逻辑true或false的话,bit是首选;
如果有扩展需求,以后可能不仅仅是逻辑布尔两个值的话,就用tinyint(4)(长度根据业务来调整)。

Mysql中tinyint与Java数据类型对应关系相关推荐

  1. Mysql中Bigint与Java数据类型对应关系

    MySQL中,有符号类型 Bigint(20)的取值范围为-9223372036854775808~9223372036854775807,与Java.lang.Long的取值范围完全一致,mybat ...

  2. delphi与java_Delphi XE8中Delphi和JAVA数据类型对应关系!

    Delphi XE8中Delphi和JAVA数据类型对应关系所在单元文件:Androidapi.JNI.JavaTypes 对应关系: JObject = interface;//java.lang. ...

  3. 理解误区——mysql中tinyint与Java的数据类型的对应关系;tinyint(1) 与tinyint(4)的区别

    理解误区1    在最初学习Java和MySQL的时,一直使用的是Boolean来接受tinyint类型的数据.具体操作:在数据库中设置TINYINT(1),存储0和1:在Java中使用boolean ...

  4. MySQL数据类型和Java数据类型对应关系表

    MySql 数据类型和 Java 数据类型之间的转换是很灵活的. 一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.String,任何 MySql 数字类型都可以被转换为任何 ...

  5. 总结java数据类型和mysql、oracle、pgsql数据类型对应关系,附数据库字段类型转java类型代码

    java的基本数据类型有八种: byte.short.int.long.float.double.char.boolean 总结java和mysql.oracle.pgsql数据类型对应关系 java ...

  6. MySQL与Java数据类型对应关系

    MySQL与Java数据类型对应关系 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR ...

  7. MySql中 tinyint ,smallint,mediumint,int,bigint 与 decimal

    MySql中 tinyint,smallint,mediumint,int 与 bigint 一.容纳数据范围不同 1.tinyint(M) M默认为4,存储占1个字节 带符号的范围是-128到127 ...

  8. 下列( )类型不是mysql中的数据类型_下列( )类型不是MySQL中常用的的数据类型。_学小易找答案...

    [单选题]下面哪个坐标系不属于在椭球面上表示点位置的坐标系统. [简答题]2.根据形体的两面投影,补绘其第三面投影(尺寸可由图上直接量取). (1) (2) (3) (4) (5) (6) (7) ( ...

  9. 以下不属于mysql列类型的是什么意思_下列 ________ 类型不是 MySQL 中常用的的数据类型。_学小易找答案...

    [简答题]工作区跳线的制作 请依据EIA568国际标准,制作一根直通线(即两端都是EIA568B线芯排布规律) 做好网线后,请拍照上传作业. [单选题]UNIQUE 惟一索引的作用是 ( ) : [简 ...

最新文章

  1. Get Started with Omni-Channel
  2. python django mysql安装_Django+Nginx+uWSGI+Mysql搭建Python Web服务器
  3. boost::hana::list用法的测试程序
  4. MYSQLl数据库 表的操作
  5. CF407 E. k-d-sequence
  6. 获得的经验:ActiveMQ,Apache Camel和连接池
  7. JDK8的JVM优化实操及部分原理加深理解
  8. 你大爷还是你大爷!三星震撼首发折叠屏智能手机Galaxy Fold
  9. 计算机日常知识试题,计算机基础知识及日常维护测试题
  10. Windows10 中在指定目录下启动Powershell
  11. 【图文】在windows7 下安装和配置Memcached 64-bit for Windows
  12. Qt自带mingw使用
  13. python:find_peaks
  14. 1一10到时的英文单词_1英语(1到10的英语单词)
  15. 【leetcode】电话号码的字母组合
  16. 报错:Cannot use v-for on stateful component root element because it renders multiple elements.
  17. 路肩石水渠机在施工公路项目中工艺特点的匹配
  18. VS Code + phpstudy实现PHP环境配置
  19. Ros:people包下子包leg_detector及其相关包笔记
  20. 苹果系统和安卓系统的区别_#你喜欢苹果系统还是安卓系统?

热门文章

  1. vscode Nuget Package Manager 提示 Versioning information could not be retrieved from the NuGet package
  2. html5 导航栏颜色怎么修改
  3. android是手机自拍,安卓6大摄影手机推荐,给喜欢自拍的你
  4. stm32 中断处理
  5. qt 自定义按钮图标
  6. 我的创作纪念日——不忘初心
  7. 三星android更新,三星Android 10更新时间表来啦!共28款机型
  8. python合并排序数组
  9. doFilter不生效的原因
  10. python crypt模块_Python的加密模块md5、sha、crypt使用实例