/**
* 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));
}
}
相关推荐
在Spring Boot项目中,枚举类型(Enums)的使用是一种常见...以上所述内容,都是在`springboot-enum-demo-master`项目中可以找到的实际应用示例,可以帮助开发者更好地理解和实现Spring Boot项目中枚举类型的高效使用。
在这个"springboot集成generator自定义插件.rar"项目中,我们看到的重点是如何在Spring Boot项目中集成MyBatis Generator,并且自定义注释。这通常涉及到以下几个关键知识点: 1. **Spring Boot与MyBatis集成**:...
本项目示例"1.springboot+mybatis项目demo2.mybatis自定义枚举类型的转换器以及各种使用场景"着重展示了如何在Spring Boot应用中集成MyBatis,并利用MyBatis处理枚举类型的数据。 首先,我们来了解Spring Boot。...
Netty学习笔记_Springboot实现自定义协议 本文主要介绍了使用Netty框架在Springboot项目中实现自定义协议的方法。自定义协议是指在网络通信中,使用特定的数据格式来传输数据,以满足特定的业务需求。在本文中,...
本主题将深入探讨如何在Spring Boot工程中通过自定义response注解、利用Java反射机制、设置自定义拦截器以及实现WebMvcConfigurer接口来实现这一目标。 首先,我们来看自定义response注解。在Spring Boot中,可以...
使用SpringBoot-JPA进行自定义保存及批量保存功能 使用SpringBoot-JPA进行自定义保存及批量保存功能是指在Spring Boot应用程序中使用JPA(Java Persistence API)来实现自定义的保存和批量保存功能。JPA是一个Java ...
`canRead`和`canWrite`用于判断转换器是否能处理指定类型的数据,`read`和`write`则是实际执行转换操作的方法。 ```java import org.springframework.http.HttpInputMessage; import org.springframework....
通过自定义TypeHandler,我们可以让枚举类型在数据库与Java对象之间无缝切换,大大提高了代码的可读性和维护性。这种方式不仅适用于`Gender`枚举,也可以扩展到其他任何你需要转换的枚举类型。在实际项目中,可以将...
在SpringBoot 项目中实现枚举转换,需要创建BaseEnumTypeHandler 类继承BaseEnum 和 BaseTypeHandler 等相关类。想要详细了解如何实现枚举转换的话,那你快点下载后深入理解吧!
在本例中,"springboot 脱敏自定义注解"意味着我们要创建一个自定义注解,标记在那些需要进行脱敏处理的方法上。自定义注解可以如下定义: ```java @Retention(RetentionPolicy.RUNTIME) @Target(ElementType....
本项目“业务异常提示处理 springboot+Assert(自定义断言)”着重于利用Spring Boot的特性来构建高效、易维护的业务逻辑,并通过自定义断言提升代码的可读性和可维护性。下面我们将详细探讨这些知识点。 1. **Spring...
Springboot项目运行替换自定义图形
Java开发案例-springboot-23-自定义注解实现post请求接收单个参数值-源代码+文档.rar Java开发案例-springboot-23-自定义注解实现post请求接收单个参数值-源代码+文档.rar Java开发案例-springboot-23-自定义注解...
本教程将深入探讨如何在SpringBoot应用中设置和使用Redis集群,并自定义序列化方法以便更方便地查看和管理缓存数据。 首先,我们来了解`springboot jedisCluster配置`。JedisCluster是Jedis库提供的一个类,用于...
在Java编程中,枚举类型(Enum)是一种强大的工具,它可以提供固定的、预定义的值集合,常用于表示有限数量的状态或选项。在关系数据库中,我们可能也需要将这些枚举值存储为列的特定类型。Hibernate,作为Java中...
springboot版本微信公众号自定义分享接口实现DEMO,复制粘贴,亲测可用!!!!!!!!!!!!!!!!!
Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-自定义starter-源代码+文档.rar Java开发案例-springboot-66-...
搭建springboot,运行项目,简单的springboot,利用包装器实现全局的错误异常吗和错误错误信息的自定义
主要介绍了Springboot如何实现自定义异常数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
使用自定义了时间和字符串的转换规则 存的时候 存字符串 读取的时候 转换为日期类型 但是在按时间查找的时候 也可以使用 下载后 直接运行 Test类 修改下MongodbConfiguration的mongoUrl 写的时候将时间转为字符串 ...