banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

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

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。