笔记:MySql数据库和java中数据类型的对应关系
类型名称显示长度JAVA类型VARCHARL+Njava.lang.StringCHARNjava.lang.StringBLOBL+Njava.lang.byte[]TEXT65535java.lang.StringINTEGER4java.lang.LongTINYINT3java.lan......
·
类型名称 | 显示长度 | 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.Date |
关于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 - 博客园
更多推荐
已为社区贡献5条内容
所有评论(0)