Mybatis映射BigDecimal问题
Mybatis映射数据库类型中使用numberic和decimal时,
如果需要使用String进行数据传递但是小数位很长或者整数位很长的话
Mybatis会把数据映射成BigDecimal来处理
但是如果Mybatis会傻傻的使用.toString()来转换,结果可能会被转成科学记数法
今天某数据库存储的超长订单号就出现了这个问题,不说了,我去改代码了。
// MyBatis的做法,直接调用Bigdecmal的.toString() // 浮点数的打印时正常 new BigDecimal("10000000000").toString() // >>10000000000 // 普通的数字字符串,没关系,我们发誓订单号不会超过限度,用数字类型没关系 new BigDecimal("100.000").toString() // >>100.000 // 去除末尾多余的0,我们用了保留订单号,订单号用123开头,然后补0, new BigDecimal("100.000").stripTrailingZeros().toString() // >>1E+2 // 避免输出科学计数法, 这才是正确的做法,MyBatis怎么搞得,这点转换都不做,MyBatis还能干啥? new BigDecimal("100.000").stripTrailingZeros().toPlainString() // >>100 |
Recent Comments