spring boot 整合redis
1.在pom文件中添加spring-boot-starter-data-redis依赖启动器
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.编写三个实体类
Person类
@RedisHash("persons") // 指定操作实体类对象在Redis数据库中的存储空间
public class Person {@Id// 标识实体类主键private String id;// 标识对应属性在Redis数据库中生成二级索引,索引名就是属性名,可以方便地进行数据条件查询@Indexedprivate String firstname;@Indexedprivate 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;}@Overridepublic String toString() {return "Person{" +"id='" + id + '\'' +", firstname='" + firstname + '\'' +", lastname='" + lastname + '\'' +", address=" + address +", familyMemberList=" + familyMemberList +'}';}
}
Address 地址类
public class Address {@Indexedprivate String city;@Indexedprivate 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;}@Overridepublic String toString() {return "Address{" +"city='" + city + '\'' +", country='" + country + '\'' +'}';}
}
FamilyMember 家庭成员类
public class FamilyMember {@Indexedprivate String type;@Indexedprivate 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;}@Overridepublic String toString() {return "FamilyMember{" +"type='" + type + '\'' +", username='" + username + '\'' +'}';}
}
3.编写Repository接口
不需要添加spring-boot-starter-data-jpa这个依赖,即:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
只要继承CrudRepository即可,如下:
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.编写单元测试进行接口方法测试以及整合测试
@SpringBootTest
class RedisTests {@Autowiredprivate PersonRepository personRepository;@Testpublic 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));}@Testpublic void selectPerson() {List<Person> list = personRepository.findByAddress_City("北京");System.out.println(list);}@Testpublic void updatePerson() {Person person = personRepository.findByFirstnameAndLastname("张","有才").get(0);person.setLastname("小明");Person update = personRepository.save(person);System.out.println(update);}@Testpublic void deletePerson() {Person person = personRepository.findByFirstnameAndLastname("张","小明").get(0);personRepository.delete(person);}
}