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