参考文章
https://blog.csdn.net/u011499747/article/details/78762007
介绍
存储自定义的对象的时候,也吃能采用字符串的存储方式。
这时候就要采用序列化的方式。而序列化就不要让类继承Serializable了。使用功能jackson更加方便。在jackson中使用ObjectMapper这个基本类。
可以看出它已经继承了Serializable,自己进行序列化。所以使用起来很方便。
依赖
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.2</version>
</dependency>
这里引入了三个jackson的依赖,然而不必,因为jackson-databind依赖core和annotations。只要引入
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.2</version>
</dependency>
一个就行,他会自动解决依赖关系。
然后创建实体对象。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private Integer id;
private String name;
private String location;
}
利用ObjectMapper序列化存入redis
@Test
public void test05(){
Student s = new Student(1001,"张坤", "上海");
ObjectMapper obj = new ObjectMapper();
//Object->json
try {
String json = obj.writeValueAsString(s);
//{"id":"1001","name":"张坤", "location":"上海"}
redisTemplate.opsForValue().set("student", json);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
取出来然后再用ObjectMapper来反序列化
@Test
public void test06() throws IOException {
ObjectMapper obj = new ObjectMapper();
String json = redisTemplate.opsForValue().get("student");
Student s = obj.readValue(json,Student.class);
System.out.println(s);
}
完工
那么如何存储结合呢
一样的,集合也是一个类。和类序列化的过程是一样的。