解决Redis序列化Java8的LocalDateTime问题

在从Redis获取带有LocalDateTime类型属性的对象时,产生序列化和反序列化问题解决办法 方式一:实体类上指定LocalDateTime的序列化器和反序列化器

1 @JsonDeserialize(using = LocalDateTimeDeserializer.class) //反序列化 2 @JsonSerialize(using = LocalDateTimeSerializer.class) //序列化 3 private LocalDateTime birthday;

方式二:在Redis的配置类中指明序列化的方式

1 @Configuration 2 public class RedisConfig { 3 private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 4 private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); 5 private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss"); 6 7 @Bean 8 public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { 9 RedisTemplate<String, Object> template = new RedisTemplate<>(); 10 template.setConnectionFactory(redisConnectionFactory); 11 12 /** 13 * JSON序列化 14 */ 15 Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class); 16 ObjectMapper mapper = new ObjectMapper(); 17 //取消时间转换格式,默认是时间戳,同时需要设置要表现的时间格式 18 mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); 19 mapper.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS, false); 20 mapper.setDateFormat(new SimpleDateFormat("yyy-MM-dd HH:mm:ss")); 21 22 //默认序列化没有实现,反序列化有实现 23 JavaTimeModule javaTimeModule = new JavaTimeModule(); 24 25 javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DATE_TIME_FORMATTER)); 26// javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DATE_FORMATTER)); 27// javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(TIME_FORMATTER)); 28 29 mapper.registerModule(javaTimeModule); 30 //设置时区 31 mapper.setTimeZone(TimeZone.getDefault()); 32 //设置格式化输出 33// MAPPER.enable(SerializationFeature.INDENT_OUTPUT); 34 //设置格式化输出 35 mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); 36 mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); 37 serializer.setObjectMapper(mapper); 38 39// StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); 40 template.setKeySerializer(serializer); 41 template.setHashKeySerializer(serializer); 42 template.setValueSerializer(serializer); 43 template.setHashValueSerializer(serializer); 44 return template; 45 } 46} 47
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

解决Redis序列化Java8的LocalDateTime问题

在从Redis获取带有LocalDateTime类型属性的对象时,产生序列化和反序列化问题解决办法方式一:实体类上指定LocalDateTime的序列化器和反序列化器@JsonDeserialize(usingLocalDateTimeDeserializer.class)//反序列化@JsonSerialize(usingLocalDa

java Redis Jedis存储Java对象

Redis入门–Jedis存储Java对象(Java序列化为byte数组方式)Redis入门–Jedis存储Java对象\(Java序列化为byte数组方式)原文地址:http://alanland.iteye.com/admin/blogs/1600685(https://www.oschina.net/action/GoT

Gson 数据解析

gson和其他现有javajson类库最大的不同时gson需要序列化的实体类不需要使用annotation来标识需要序列化的字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。下面是一个简单的例子:1.public class Person {3.private String name;

unity 序列化和反序列化

什么是序列化和反序列化(1)序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程;. (2)序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。序列化后的字节流保存了对象的状态以及相关的描述信息。序列化机制