spring boot 整合redis

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);

    }
}
相关推荐
等什么君!7 小时前
学习spring boot-拦截器Interceptor,过滤器Filter
java·spring boot·学习
qq_3841368449 小时前
SpringBoot的启动流程
java·spring boot·后端
Themberfue10 小时前
Redis ⑨-Jedis | Spring Redis
java·数据库·redis·sql·spring·缓存
筏.k12 小时前
Redis 数据类型详解(一):String 类型全解析
数据库·redis·缓存
武昌库里写JAVA12 小时前
iview table组件 自定义表头
vue.js·spring boot·毕业设计·layui·课程设计
武昌库里写JAVA12 小时前
iview 分页改变每页条数时请求两次问题
vue.js·spring boot·毕业设计·layui·课程设计
计算机学姐13 小时前
基于SpringBoot的同城宠物照看管理系统
java·vue.js·spring boot·后端·mysql·mybatis·宠物
潘多编程13 小时前
Spring Cloud Gateway MVC 基于 Spring Boot 3.4 以 WAR 包形式部署于外部 Tomcat 实战
spring boot·tomcat·mvc
Alsn8614 小时前
10.idea中创建springboot项目_jdk17
java·spring boot·intellij-idea
阿四啊15 小时前
【Redis】Java操作Redis之SpringDataRedis
java·redis