场景描述:
基于springboot架构的项目上,向mongo读取BigDecimal字段类型;
问题以及解决思路:
mongo中不支持java的java.util.math.BigDecimal类型,而mongo中使用的是org.bson.types.Decimal128,所以在读写的时候需要进行类型转换。
mongo提供了自定义转换器,可以通过定义写转换器:java.util.math.BigDecimal->org.bson.types.Decimal128,定义读转换器:org.bson.types.Decimal128->java.util.math.BigDecimal,已解决这个问题。
代码层面:
1.实现读写转换器:BigDecimalToDecimal128Converter.class 与 Decimal128ToBigDecimalConverter.class
import org.bson.types.Decimal128;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.WritingConverter;
import java.math.BigDecimal;
/**
* java-->mongo 即BigDecimal变为Decimal128的转换器
*/
@WritingConverter
public class BigDecimalToDecimal128Converter implements Converter<BigDecimal, Decimal128> {
@Override
public Decimal128 convert(BigDecimal bi