1.在pom文件中添加spring-boot-starter-data-redis依赖启动器
XML
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.编写三个实体类
Person类
java
@RedisHash("persons") // 指定操作实体类对象在Redis数据库中的存储空间
public class Person {
@Id// 标识实体类主键
private String id;
// 标识对应属性在Redis数据库中生成二级索引,索引名就是属性名,可以方便地进行数据条件查询
@Indexed
private String firstname;
@Indexed
private String lastname;
private Address address;
private List<FamilyMember> familyMemberList;
public Person() { }
public Person(String firstname, String lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public List<FamilyMember> getFamilyMemberList() {
return familyMemberList;
}
public void setFamilyMemberList(List<FamilyMember> familyMemberList) {
this.familyMemberList = familyMemberList;
}
@Override
public String toString() {
return "Person{" +
"id='" + id + '\'' +
", firstname='" + firstname + '\'' +
", lastname='" + lastname + '\'' +
", address=" + address +
", familyMemberList=" + familyMemberList +
'}';
}
}
Address 地址类
java
public class Address {
@Indexed
private String city;
@Indexed
private String country;
public Address() {
}
/**
*
* @param city 城市
* @param country 国家
*/
public Address(String city, String country) {
this.city = city;
this.country = country;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
@Override
public String toString() {
return "Address{" +
"city='" + city + '\'' +
", country='" + country + '\'' +
'}';
}
}
FamilyMember 家庭成员类
java
public class FamilyMember {
@Indexed
private String type;
@Indexed
private String username;
public FamilyMember() {
}
public FamilyMember(String type, String username) {
this.type = type;
this.username = username;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String toString() {
return "FamilyMember{" +
"type='" + type + '\'' +
", username='" + username + '\'' +
'}';
}
}
3.编写Repository接口
不需要添加spring-boot-starter-data-jpa这个依赖,即:
XML
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
只要继承CrudRepository即可,如下:
java
public interface PersonRepository extends CrudRepository<Person, String> {
List<Person> findByLastname(String lastname);
Page<Person> findPersonByLastname(String lastname, Pageable page);
List<Person> findByFirstnameAndLastname(String firstname, String lastname);
List<Person> findByAddress_City(String city);
List<Person> findByFamilyMemberList_Username(String username);
}
4.在全局配置文件application.properties中添加Redis数据库连接配置
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
5.编写单元测试进行接口方法测试以及整合测试
java
@SpringBootTest
class RedisTests {
@Autowired
private PersonRepository personRepository;
@Test
public void testSave(){
Person person1 = personRepository.save(new Person("James", "Harden"));
System.out.println(person1);
Person person2 = new Person("张", "有才");
Address address = new Address("北京", "中国");
person2.setAddress(address);
//创建并添加家庭成员
FamilyMember familyMember1 = new FamilyMember("父亲", "张朝阳");
FamilyMember familyMember2 = new FamilyMember("母亲", "王美美");
ArrayList<FamilyMember> familyMembers = new ArrayList<>();
familyMembers.add(familyMember1);
familyMembers.add(familyMember2);
person2.setFamilyMemberList(familyMembers);
System.out.println(personRepository.save(person2));
}
@Test
public void selectPerson() {
List<Person> list = personRepository.findByAddress_City("北京");
System.out.println(list);
}
@Test
public void updatePerson() {
Person person = personRepository.findByFirstnameAndLastname("张","有才").get(0);
person.setLastname("小明");
Person update = personRepository.save(person);
System.out.println(update);
}
@Test
public void deletePerson() {
Person person = personRepository.findByFirstnameAndLastname("张","小明").get(0);
personRepository.delete(person);
}
}
