`
xxjkcyt
  • 浏览: 5813 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

springboot MangoTemplate保存自定义枚举类型值

 
阅读更多

/**

 * MongoDB配置

 */

@Configuration

public class MongoDBConfig

{

    private MappingMongoConverter converter;

 

    /*

     * 系统内部使用的类型转换器都在这里设置

     */

    @Autowired

    public void setMappingMongoConverter(MappingMongoConverter converter)

    {

        // 设置mongodb不保存 _class字段

        converter.setTypeMapper(new DefaultMongoTypeMapper(null));

        GenericConversionService conversionService = GenericConversionService.class.cast(

            converter.getConversionService());

 

        // 这里是设置自定义枚举类型转换器

        conversionService.addConverter(new Int2OrderStatusConverter());

        conversionService.addConverter(new OrderStatus2IntConverter());

        conversionService.addConverter(new Int2PayTypeConverter());

        conversionService.addConverter(new PayType2IntConverter());

        conversionService.addConverter(new Int2TradeTypeConverter());

        conversionService.addConverter(new TradeType2IntConverter());

 

        DirectFieldAccessor bw = (DirectFieldAccessor)PropertyAccessorFactory.forDirectFieldAccess(

            converter);

        CustomConversions conversions = (CustomConversions)bw.getPropertyValue(

            "conversions");

 

        // 这里是设置保存文档时,将Java Bean属性映射映射到文档字段的策略

        Map<Class<?>, CacheValue<Class<?>>> rawWriteTargetTypes = (Map<Class<?>, CacheValue<Class<?>>>)PropertyAccessorFactory.forDirectFieldAccess(

            conversions).getPropertyValue("rawWriteTargetTypes");

        rawWriteTargetTypes.put(OrderStatus.class,

            CacheValue.ofNullable(Integer.class));

        rawWriteTargetTypes.put(PayType.class,

            CacheValue.ofNullable(Integer.class));

        rawWriteTargetTypes.put(TradeType.class,

            CacheValue.ofNullable(Integer.class));

 

        // 这是是设置读取文档,并将文档字段转换为Java Bean属性的映射策略

        Map<ConvertiblePair, CacheValue<Class<?>>> customReadTargetTypes = (Map<ConvertiblePair, CacheValue<Class<?>>>)PropertyAccessorFactory.forDirectFieldAccess(

            conversions).getPropertyValue("customReadTargetTypes");;

        customReadTargetTypes.put(

            new ConvertiblePair(Integer.class, OrderStatus.class),

            CacheValue.ofNullable(OrderStatus.class));

        customReadTargetTypes.put(

            new ConvertiblePair(Integer.class, PayType.class),

            CacheValue.ofNullable(PayType.class));

        customReadTargetTypes.put(

            new ConvertiblePair(Integer.class, TradeType.class),

            CacheValue.ofNullable(TradeType.class));

    }

}

分享到:
评论

相关推荐

    springboot项目中枚举类型的最佳实践

    在Spring Boot项目中,枚举类型(Enums)的使用是一种常见...以上所述内容,都是在`springboot-enum-demo-master`项目中可以找到的实际应用示例,可以帮助开发者更好地理解和实现Spring Boot项目中枚举类型的高效使用。

    springboot集成generator自定义插件.rar

    在这个"springboot集成generator自定义插件.rar"项目中,我们看到的重点是如何在Spring Boot项目中集成MyBatis Generator,并且自定义注释。这通常涉及到以下几个关键知识点: 1. **Spring Boot与MyBatis集成**:...

    SpringBoot 枚举类型转换

    在SpringBoot 项目中实现枚举转换,需要创建BaseEnumTypeHandler 类继承BaseEnum 和 BaseTypeHandler 等相关类。想要详细了解如何实现枚举转换的话,那你快点下载后深入理解吧!

    1.springbood+mybatis项目demo2.mybatis自定义枚举类型的转换器以及各种使用场景

    本项目示例"1.springboot+mybatis项目demo2.mybatis自定义枚举类型的转换器以及各种使用场景"着重展示了如何在Spring Boot应用中集成MyBatis,并利用MyBatis处理枚举类型的数据。 首先,我们来了解Spring Boot。...

    Netty学习笔记_Springboot实现自定义协议.docx

    Netty学习笔记_Springboot实现自定义协议 本文主要介绍了使用Netty框架在Springboot项目中实现自定义协议的方法。自定义协议是指在网络通信中,使用特定的数据格式来传输数据,以满足特定的业务需求。在本文中,...

    springboot整合myBatis自定义mapper

    springboot整合myBatis自定义mapper

    springboot工程自定义response注解、自定义规范化返回数据结构

    本主题将深入探讨如何在Spring Boot工程中通过自定义response注解、利用Java反射机制、设置自定义拦截器以及实现WebMvcConfigurer接口来实现这一目标。 首先,我们来看自定义response注解。在Spring Boot中,可以...

    使用SpringBoot-JPA进行自定义保存及批量保存功能

    使用SpringBoot-JPA进行自定义保存及批量保存功能 使用SpringBoot-JPA进行自定义保存及批量保存功能是指在Spring Boot应用程序中使用JPA(Java Persistence API)来实现自定义的保存和批量保存功能。JPA是一个Java ...

    SpringBoot 整合Kafka实现消息的发送和接收

    在本文中,我们将深入探讨如何将SpringBoot与Apache Kafka整合,以实现在应用程序中的消息发送和接收。Apache Kafka是一款高性能的分布式消息中间件,而SpringBoot则是简化Java应用开发的框架。结合两者,我们可以...

    SpringBoot中自定义消息转换器示例源码

    `canRead`和`canWrite`用于判断转换器是否能处理指定类型的数据,`read`和`write`则是实际执行转换操作的方法。 ```java import org.springframework.http.HttpInputMessage; import org.springframework....

    springboot--mybatis枚举自动转换实现.rar

    通过自定义TypeHandler,我们可以让枚举类型在数据库与Java对象之间无缝切换,大大提高了代码的可读性和维护性。这种方式不仅适用于`Gender`枚举,也可以扩展到其他任何你需要转换的枚举类型。在实际项目中,可以将...

    springboot 脱敏自定义注解

    在本例中,"springboot 脱敏自定义注解"意味着我们要创建一个自定义注解,标记在那些需要进行脱敏处理的方法上。自定义注解可以如下定义: ```java @Retention(RetentionPolicy.RUNTIME) @Target(ElementType....

    业务异常提示处理 springboot+Assert(自定义断言)

    本项目“业务异常提示处理 springboot+Assert(自定义断言)”着重于利用Spring Boot的特性来构建高效、易维护的业务逻辑,并通过自定义断言提升代码的可读性和可维护性。下面我们将详细探讨这些知识点。 1. **Spring...

    banner.txt(Springboot项目运行替换自定义图形)

    Springboot项目运行替换自定义图形

    Java开发案例-springboot-23-自定义注解实现post请求接收单个参数值-源代码+文档.rar

    Java开发案例-springboot-23-自定义注解实现post请求接收单个参数值-源代码+文档.rar Java开发案例-springboot-23-自定义注解实现post请求接收单个参数值-源代码+文档.rar Java开发案例-springboot-23-自定义注解...

    redis-cluster结合springboot的使用自定义序列化

    本教程将深入探讨如何在SpringBoot应用中设置和使用Redis集群,并自定义序列化方法以便更方便地查看和管理缓存数据。 首先,我们来了解`springboot jedisCluster配置`。JedisCluster是Jedis库提供的一个类,用于...

    hibernate映射枚举类型

    在Java编程中,枚举类型(Enum)是一种强大的工具,它可以提供固定的、预定义的值集合,常用于表示有限数量的状态或选项。在关系数据库中,我们可能也需要将这些枚举值存储为列的特定类型。Hibernate,作为Java中...

    springboot版本微信公众号自定义分享接口实现DEMO

    springboot版本微信公众号自定义分享接口实现DEMO,复制粘贴,亲测可用!!!!!!!!!!!!!!!!!

    Java开发案例-springboot-66-自定义starter-源代码+文档.rar

    Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-...

    springboot搭建以及自定义全局异常

    搭建springboot,运行项目,简单的springboot,利用包装器实现全局的错误异常吗和错误错误信息的自定义

Global site tag (gtag.js) - Google Analytics