Mybatis は、numberic と decimal を使用してデータベースの型をマッピングする際、小数点以下が長いか整数部が長い場合、データを String で渡す必要がある場合でも、Mybatis はデータを BigDecimal としてマッピングします。しかし、Mybatis は.toString () を使用して変換するため、結果は科学的な表記法に変換される可能性があります。今日、あるデータベースに保存されている長い注文番号でこの問題が発生しました。話すのをやめて、コードを修正します。
// MyBatis の方法、BigDecimal の.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