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)BITjava.lang.Boolean
bit(大于1) (MySQL-5.0)BITbyte[]
tinyintTINYINT如果 tinyInt1isBit 配置设置为 true(默认为 true),是java.lang.Boolean,存储空间为 1;否则是为 java.lang.Integer
bool booleanTINYINT参见 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)FLOATjava.lang.Float
double(M,B)DOUBLEjava.lang.Double
decimal(M,D)DECIMALjava.math.BigDecimal
dateDATEjava.sql.Date
datetimeDATETIMEjava.sql.Timestamp
timestamp(M)TIMESTAMPjava.sql.Timestamp
timeTIMEjava.sql.Time
year(2/4)YEAR如果 yearIsDateType 配置设置为 false,返回的对象类型为 java.sql.Short;如果设置为 true(默认为 true),返回的对象类型是 java.sql.Date,其具体时间是为一月一日零时零分
char(M)CHARjava.lang.String(除非该列字符集设置为 BINARY,那样返回 byte[])
varchar(M) [binary]VARCHARjava.lang.String(除非该列字符集设置为 BINARY,那样返回 byte[])
binary(M)BINARYbyte[]
varbinary(M)VARBINARYbyte[]
tinyblobTINYBLOBbyte[]
tinytextVARCHARjava.lang.String
blobBLOBbyte[]
textVARCHARjava.lang.String
mediumblobMEDIUMBLOBbyte[]
mediumtextVARCHARjava.lang.String
longblobLONGBLOBbyte[]
longtextVARCHARjava.lang.String
enum('value1','value2',...)CHARjava.lang.String
set('value1','value2',...)CHARjava.lang.String

Mysql字段类型

decimal(8,2):
    有2位小数的定点数,定点数支持很大的数(甚至是超过int,bigint存储范围的数)

decimal不会损失精度,存储空间会随数据的增大而增大。double占用固定空间,较大数的存储会损失精度。


字符串型:
    定长与变长的区别,CHAR类型占用空间比较大,但是处理速度比VARCHAR快。
    如果长度变化不大,最好选择CHAR类型。对于长度不确定的,最好选择VARCHAR。

1748170-20190928191005966-1351590994.png

1748170-20190928191012476-2028024768.png

1748170-20190928191022296-367652503.png

转载于:https://www.cnblogs.com/loveer/p/11604423.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值