什么注解可以改变BigDecimal类型的字段返回的⼩数位数?问题背景:我在数据库⾥有⼀个字段,是decimal(20,15)类型,但是我在代码⾥返回数据给前端时,我要返回5位⼩数给前端。那么怎么转换BigDecimal字段数值的⼩数点后的位数?
⼀般的,如果我们只有⼀个字段,⾃然⽽然的想到的是在返回数据时⼿动处理⼀下,如:
但是,如果我们有很多BigDecimal字段呢?这样处理起来是不是就太⿇烦了,⽽且代码写出来也不好看。是否有⼀个像⽇期格式化的注解那样,直接加在属性上就⽣效了,不需要再写别的代码了?
虽然暂时没有到这种注解,但是我到了⼀个⽅法,可以⾃⼰利⽤@JsonSerialize注解,然后⾃定义返回格式,现在记录分享给⼤家。
步骤⼀:新建⼀个类,继承JsonSerializer。
public class BigDecimalSerializer extends JsonSerializer<BigDecimal> {
@Override
public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
if (value != null) {
// 保留5位⼩数,四舍五⼊
BigDecimal number = value.setScale(5, RoundingMode.HALF_UP);
gen.writeNumber(number);
} else {
gen.writeNumber(value);
}
}
}
bigdecimal除法保留小数步骤⼆:在要转换输出格式的BigDecimal类型的字段上加上注解,引⽤这个⾃⼰写的类。代码如下:
public class entity(){
@JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal price ;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。