Home > 语言编程 > Mybatis映射BigDecimal问题

Mybatis映射BigDecimal问题

Mybatis映射数据库类型中使用numberic和decimal时,
如果需要使用String进行数据传递但是小数位很长或者整数位很长的话
Mybatis会把数据映射成BigDecimal来处理
但是如果Mybatis会傻傻的使用.toString()来转换,结果可能会被转成科学记数法
今天某数据库存储的超长订单号就出现了这个问题,不说了,我去改代码了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 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
Categories: 语言编程 Tags: ,
  1. No comments yet.
  1. No trackbacks yet.