/**
* 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));
}
}
相关推荐
前端传枚举名称给后端接口,序列化器自动将其转换成对应的枚举值code。 后端业务传枚举名称给数据库,序列化器自动将其转换成对应的枚举值code。 springboot项目中枚举类型的最佳实践
springboot工程通过自定义response注解、java反射机制、自定义java拦截器、自定义功能类实现WebMvcConfigurer接口等功能,实现自定义规范化返回数据结构。
Netty学习笔记_Springboot实现自定义协议.docx Netty学习笔记_Springboot实现自定义协议.docx Netty学习笔记_Springboot实现自定义协议.docx
springboot项目 mybatis generator 生成自定义 注释(maven项目 打包被 其他项目引用的demo)
SpringBoot中自定义消息转换器示例源码
springboot--mybatis枚举自动转换实现--请配合文章使用,效果更佳,枚举的反复横跳,左右横跳,再也不是问题了
springboot 脱敏自定义注解 SpringAOP
1.springbood+mybatis项目demo 2.mybatis自定义枚举类型的转换器以及各种使用场景
使用springboot框架快速搭建,封装自定义断言做业务校验,公共异常处理打印日志, 更简单的业务判断处理
在SpringBoot 项目中实现枚举转换,需要创建BaseEnumTypeHandler 类继承BaseEnum 和 BaseTypeHandler 等相关类。想要详细了解如何实现枚举转换的话,那你快点下载后深入理解吧!
redis-cluster结合springboot的使用自定义缓存数据的序列化方式方便通过命令行查看里面的内容,里面包含一整套的代码内容,只需要将缓存地址换成自己的集群地址即可,亲测可用的代码内容.
主要介绍了使用SpringBoot-JPA进行自定义的保存及批量保存功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
SpringBoot中自定义拦截器示例代码SpringBoot中自定义拦截器示例代码
hibernate映射枚举类型,hibernate如何映射枚举类型
搭建springboot,运行项目,简单的springboot,利用包装器实现全局的错误异常吗和错误错误信息的自定义
主要介绍了Springboot如何实现自定义异常数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了Springboot2.0处理自定义异常并返回json,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Springboot项目运行替换自定义图形
使用自定义了时间和字符串的转换规则 存的时候 存字符串 读取的时候 转换为日期类型 但是在按时间查找的时候 也可以使用 下载后 直接运行 Test类 修改下MongodbConfiguration的mongoUrl 写的时候将时间转为字符串 ...
主要介绍了在SpringBoot下读取自定义properties配置文件的方法,文中涉及到了Spring-boot中读取config配置文件的两种方式,需要的朋友可以参考下