前言:我们都知道金额类型一般为BigDecimal(Double、Float会丢失精度),但数据库(MySQL)存储可以为int、bigint、numeric、==decimal(18, 2)==等。
这里,我选择在数据库中金额存储单位为分,即存储类型为bigint,展示的时候单位为元。每次手动存储时*100,取出时/100感觉很麻烦,所以用到了自定义注解在序列化和反序列化时对金额进行操作。
1.金额所在实体类
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {
@BigDecimalMaxPrecision//自定义注解验证金额保留小数位数不超过2位
@JsonSerialize(using = BigDecimal2Serialize.class)
@JsonDeserialize(using = BigDecimal2Deserialize.class)
private BigDecimal balanceAmount;
}
我们需要实现:反序列化时金额*100,序列化时/100