如何在Spring-Data-MongoDB框架中将BigDecimal转换为Double [英] How to convert BigDecimal to Double in spring-data-mongodb framework
本文介绍了如何在Spring-Data-MongoDB框架中将BigDecimal转换为Double的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Spring Data MongoDB映射默认将BigDecimal转换为String.但是,我希望它们在mongodb中转换为Double.后者对于在mongodb中的此字段上进行查询(比较查询/聚合查询)是必需的. 如何注册自己的转换器(BigDecimalToDouble/DoubleToBigDecimal)来做到这一点?
Spring Data MongoDB mapping by default converts BigDecimal to String. However, I want them to be converted as Double in mongodb. This is required for latter to make queries on this field in mongodb (comparison queries/aggregation queries). How can I reigster my own converter (BigDecimalToDouble / DoubleToBigDecimal) to do this?
推荐答案
在这里,您可以添加自己的转换器:
Here's how you can add your own converters:
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoDbFactory"/>
<constructor-arg ref="mappingConverter"/>
<property name="writeConcern">
<util:constant static-field="com.mongodb.WriteConcern.FSYNC_SAFE"/>
</property>
<property name="writeResultChecking">
<util:constant static-field="org.springframework.data.mongodb.core.WriteResultChecking.EXCEPTION"/>
</property>
</bean>
<mongo:mapping-converter id="mappingConverter">
<mongo:custom-converters base-package="com.vladmihalcea.**.mongo.converter"/>
</mongo:mapping-converter>
现在您的转换器看起来像:
Now your converters would look like:
@Component
public class DoubleToBigDecimalConverter implements Converter<Double, BigDecimal> {
@Override
public BigDecimal convert(Double source) {
return new BigDecimal(source);
}
}
@Component
public class BigDecimalToDoubleConverter implements Converter<BigDecimal, Double> {
@Override
public Double convert(BigDecimal source) {
return source.doubleValue();
}
}
在添加转换器之前,我得到了:
Before adding converter I got:
update test.product query: { _id: 123 } update: { _id: 123, _class: "com.vladmihalcea.mongo.model.Product", name: "Tv", quantity: "10", discount: "12.34", version: 0 } nscanned:0 nupdated:1 upsert:1 keyUpdates:0 locks(micros) w:49328 50ms
添加转换器后:
update test.product query: { _id: 123 } update: { _id: 123, _class: "com.vladmihalcea.mongo.model.Product", name: "Tv", quantity: "10", discount: 12.34, version: 0 } nscanned:0 nupdated:1 upsert:1 keyUpdates:0 locks(micros) w:64689 65ms
这篇关于如何在Spring-Data-MongoDB框架中将BigDecimal转换为Double的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文