在 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