spring boot整合mongo查询converter异常的方法(converter,mongo,springboot,开发技术)

时间:2024-05-02 14:40:46 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

前言

使用过spring boot的人都知道spring boot约定优于配置的理念给我们开发中集成相关技术框架提供了很多的便利,集成mongo也是相当的简单,但是通过约定的配置信息来集成mongo有些问题。

当你的字段包含Timestamp这种类型时,读取数据的时候会抛一个类型转换的异常,如

No converter found capable of converting from type [java.util.Date] to type [java.sql.Timestamp]

是因为,mongo本身时间类型为Date,在做结果映射的时候Date并不能强转成Timestamp,这是其中的一个点,当然还有很多类似的数据转换问题可以通过这个举一反三的来解决。

所以,我们需要自定义的转换器,而spring boot约定的MongoProperties并没有配置转换器一项,我们不能简单的通过application.properties来达到我们的配置。

下面我们通过java bean的方式补充配置我们的带自定义转换器的MongoTemplate,来解决问题

自定义转换器

importorg.springframework.core.convert.converter.Converter;importjava.sql.Timestamp;importjava.util.Date;publicclassTimestampConverterimplementsConverter{publicTimestampconvert(Datedate){if(date!=null){returnnewTimestamp(date.getTime());}returnnull;}}

java bean的方式配置MongoTemplate

/***Createdbyklon2017/3/22.*Content:mongodb的MongoTemplate配置*/@ConfigurationpublicclassMongoDBConfig{@BeanpublicMongoTemplategetMongoTemplate(MongoDbFactorydbFactory,MappingMongoConverterconverter){MongoTemplatetemplate=newMongoTemplate(dbFactory,converter);returntemplate;}@BeanpublicMappingMongoConvertermappingMongoConverter(MongoDbFactoryfactory,MongoMappingContextcontext,BeanFactorybeanFactory,CustomConversionsconversions){DbRefResolverdbRefResolver=newDefaultDbRefResolver(factory);MappingMongoConvertermappingConverter=newMappingMongoConverter(dbRefResolver,context);mappingConverter.setCustomConversions(beanFactory.getBean(CustomConversions.class));mappingConverter.setTypeMapper(newDefaultMongoTypeMapper(null));//去掉默认mapper添加的_classmappingConverter.setCustomConversions(conversions);//添加自定义的转换器returnmappingConverter;}@BeanpublicCustomConversionscustomConversions(){Listlist=newArrayList();list.add(newTimestampConverter());returnnewCustomConversions(list);}}

ps:默认的mongo类型映射会把我们的class全路径名添加到我们的mongdb的_class字段,如下图所示,主要是为了查询结果子类型的映射。

如果我们并不需要,可以通过构造DefaultMongoTypeMapper传空的方式去掉

spring boot整合mongo查询converter异常的方法

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:spring boot整合mongo查询converter异常的方法的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Unity3D实现相机跟随控制的方法下一篇:

1 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18