笔记:MySql数据库和java中数据类型的对应关系

类型名称

显示长度 JAVA类型
VARCHAR L+N java.lang.String
CHAR N java.lang.String
BLOB L+N java.lang.byte[]
TEXT 65535 java.lang.String
INTEGER 4 java.lang.Long
TINYINT 3 java.lang.Integer
SMALLINT 5 java.lang.Integer
MEDIUMINT 8 java.lang.Integer
BIT 1 java.lang.Boolean
BIGINT 20 java.math.BigInteger
FLOAT 4+8 java.lang.Float
DOUBLE 22 java.lang.Double
DECIMAL 11 java.math.BigDecimal
BOOLEAN 1
ID 11 java.lang.Long
DATE 10 java.sql.Date
TIME 8 java.sql.Time
DATETIME 19 java.sql.Timestamp
TIMESTAMP 19 java.sql.Timestamp
YEAR 4

java.sql.Dat

关于Mysql中如何选用这BigDecimal和double

1.首先与java不同的是mysql是用来持久化数据的,而java中使用的数据一般更多的是过一下内存;

2.数据库都要除了指定数据类型指外还需要指定精度,因此在DB中Double计算时精度的丢失比Java高得多;

因为Java默认精确到15-16位了;

3.更改数据类型的成本,Mysql比Java代码要难得多;

考虑到以上与java中不同几点,做点个人使用总结:

1.与商业金融相关字段要使用Decimal来表示,如金额,费率等字段;

2.参与各类计算如加,减,乘,除,sum,avg等等,也要使用Decimal;

3.经纬度,可以使用double来表示,这个可参考Java,只要保证精度范围即可;

4.如果确实不确定使用什么double或Decimal哪种类型合适,那最好使用Decimal,毕竟稳定,安全高于一切;

带小数的类型一律使用Decimal可以大大减少计算踩坑的概率

看到一篇文章挺好的,贴一下数据库字段类型与java数据类型的对应关系 - iBlog - 博客园

你可能感兴趣的:(java,sql,数据库)