什么注解可以改变BigDecimal类型的字段返回的小数位数?
什么注解可以改變BigDecimal類型的字段返回的小數(shù)位數(shù)?_myme95的博客-CSDN博客
問題背景:我在數(shù)據(jù)庫里有一個(gè)字段,是decimal(20,15)類型,但是我在代碼里返回?cái)?shù)據(jù)給前端時(shí),我要返回5位小數(shù)給前端。那么怎么轉(zhuǎn)換BigDecimal字段數(shù)值的小數(shù)點(diǎn)后的位數(shù)?
一般的,如果我們只有一個(gè)字段,自然而然的想到的是在返回?cái)?shù)據(jù)時(shí)手動(dòng)處理一下,如:
但是,如果我們有很多BigDecimal字段呢?這樣處理起來是不是就太麻煩了,而且代碼寫出來也不好看。是否有一個(gè)像日期格式化的注解那樣,直接加在屬性上就生效了,不需要再寫別的代碼了?
如
雖然暫時(shí)沒有找到這種注解,但是我找到了一個(gè)方法,可以自己利用@JsonSerialize注解,然后自定義返回格式,現(xiàn)在記錄分享給大家。
步驟一:新建一個(gè)類,繼承JsonSerializer。
public class BigDecimalSerializer extends JsonSerializer<BigDecimal> {
?
? ? @Override
? ? public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
? ? ? ? if (value != null) {
? ? ? ? ? ? // 保留5位小數(shù),四舍五入
? ? ? ? ? ? BigDecimal number = value.setScale(5, RoundingMode.HALF_UP);
? ? ? ? ? ? gen.writeNumber(number);
? ? ? ? } else {
? ? ? ? ? ? gen.writeNumber(value);
? ? ? ? }
? ? }
}
步驟二:在要轉(zhuǎn)換輸出格式的BigDecimal類型的字段上加上注解,引用這個(gè)自己寫的類。代碼如下:
public class entity(){
?
@JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal price ;
?
?
}
?
myme95
關(guān)注
4
1
7
java中BigDecimal的操作方法
09-04
主要介紹了java中BigDecimal的操作方法,較為詳細(xì)的分析了BigDecimal類在進(jìn)行商業(yè)計(jì)算時(shí)的應(yīng)用方法,精度以及注意事項(xiàng)等問題,需要的朋友可以參考下
實(shí)體類BigDecimal類型字段注解實(shí)現(xiàn)取兩位小數(shù)序列化
最新發(fā)布
天棄的博客
?161
創(chuàng)建class import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; import java.math.BigDecimal; public class BigDecimalSeri
評(píng)論1
?
不吃西紅柿:notomoto
2021.05.04
回復(fù)
大佬的文章讓我受益匪淺,如癡如醉,以后的日子還希望能夠得到大佬的諄諄指指點(diǎn)點(diǎn)!
————————————————
版權(quán)聲明:本文為CSDN博主「myme95」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/myme95/article/details/114374151
什么注解可以改變BigDecimal類型的字段返回的小數(shù)位數(shù)?_myme95的博客-CSDN博客
總結(jié)
以上是生活随笔為你收集整理的什么注解可以改变BigDecimal类型的字段返回的小数位数?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TMDHosting vs SiteGr
- 下一篇: win10打字突然变成繁体