zoukankan      html  css  js  c++  java
  • MySql 字段类型对应 Java 实体类型

    前言

    MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的:
    
        一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.String。
    
        任何 MySql 数字类型都可以被转换为任何一种 Java 数字类型。
        (当然这样也可能出一些四舍五入,溢出,精度丢失之类的问题)。 
    
    

    Java基础类型与包装类型

    a)
      如果数据库字段是允许为空的,使用包装类。
    
      如果不允许为空,使用包装的时候,如果你往数据库插入null值,此时就会抛出异常。
      然后你就可以对异常进行捕获并处理。
    
     
    b)
      使用基本数据类型的时候,如果字段是NULL,那么JDBC会返回0,但是这里会有一个问题。
      有可能0在你的业务逻辑代表着特定含义,这时候就可能出现一些意想不到的后果。
    
      
    总结:在项目中去使用包装类型而不是基本数据类型,这样可以使你编写代码更简单
    

    ResultSet.getObject() 对 MySql 类型和 Java 类型转换表

    MySql 类型名 GetColumnClassName 返回值 返回的 Java 类
    bit(1) (MySQL-5.0) BIT java.lang.Boolean
    bit(大于1) (MySQL-5.0) BIT byte[]
    tinyint TINYINT 如果 tinyInt1isBit 配置设置为 true(默认为 true),是java.lang.Boolean,存储空间为 1;否则是为 java.lang.Integer
    bool boolean TINYINT 参见 TINYINT。这些是 TINYINT(1) 另一种写法
    smallint(M) [unsigned] SMALLINT [UNSIGNED] java.lang.Integer(不管是否无符)
    mediumint(M) [unsigned] MEDIUMINT [UNSIGNED] java.lang.Integer
    int integer(M) [unsigned] INTEGER [UNSIGNED] java.lang.Integer;无符的话是 java.lang.Long
    bigint(M) [unsigned] BIGINT [UNSIGNED] java.lang.Long;无符的话是 java.math.BigInteger
    float(M,D) FLOAT java.lang.Float
    double(M,B) DOUBLE java.lang.Double
    decimal(M,D) DECIMAL java.math.BigDecimal
    date DATE java.sql.Date
    datetime DATETIME java.sql.Timestamp
    timestamp(M) TIMESTAMP java.sql.Timestamp
    time TIME java.sql.Time
    year(2/4) YEAR 如果 yearIsDateType 配置设置为 false,返回的对象类型为 java.sql.Short;如果设置为 true(默认为 true),返回的对象类型是 java.sql.Date,其具体时间是为一月一日零时零分
    char(M) CHAR java.lang.String(除非该列字符集设置为 BINARY,那样返回 byte[])
    varchar(M) [binary] VARCHAR java.lang.String(除非该列字符集设置为 BINARY,那样返回 byte[])
    binary(M) BINARY byte[]
    varbinary(M) VARBINARY byte[]
    tinyblob TINYBLOB byte[]
    tinytext VARCHAR java.lang.String
    blob BLOB byte[]
    text VARCHAR java.lang.String
    mediumblob MEDIUMBLOB byte[]
    mediumtext VARCHAR java.lang.String
    longblob LONGBLOB byte[]
    longtext VARCHAR java.lang.String
    enum('value1','value2',...) CHAR java.lang.String
    set('value1','value2',...) CHAR java.lang.String

    Mysql字段类型

    decimal(8,2):
        有2位小数的定点数,定点数支持很大的数(甚至是超过int,bigint存储范围的数)
    
    decimal不会损失精度,存储空间会随数据的增大而增大。double占用固定空间,较大数的存储会损失精度。
    
    
    字符串型:
        定长与变长的区别,CHAR类型占用空间比较大,但是处理速度比VARCHAR快。
        如果长度变化不大,最好选择CHAR类型。对于长度不确定的,最好选择VARCHAR。
    

  • 相关阅读:
    NC105 二分查找
    Spark-Streaming总结
    spark java API 实现二次排序
    在eclipse上安装Scala插件
    maven:missing artifact jdk.tools:jar:1.7
    使用 Hive装载数据的几种方式
    Eclipse debug 调试快捷键
    yarn工作流程
    Windows 7 下安装mysql-5.7.18-winx64.zip
    希尔排序
  • 原文地址:https://www.cnblogs.com/loveer/p/11604423.html
Copyright © 2011-2022 走看看