zoukankan      html  css  js  c++  java
  • springBoot整合Spring-Data-JPA, Redis Redis-Desktop-Manager2020 windows

    源码地址:https://gitee.com/ytfs-dtx/SpringBoot

    Redis-Desktop-Manager2020地址:

    https://ytsf.lanzous.com/b01bei1bc

    密码:2qan

    集成Spring Data JPA

    添加Spring Data JPA的起步依赖

    <!-- springBoot JPA的起步依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    添加数据库驱动依赖

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    在application.yml中配置数据库和JPA的相关属性

    #DB Configuration
    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
        username: root
        password: root
        type: com.alibaba.druid.pool.DruidDataSource
      jpa:
        database: mysql
        show-sql: true
        generate-ddl: false
        hibernate:
          ddl-auto: update

    创建实体配置实体

    package xyz.ytfs.entity;
    
    import javax.persistence.*;
    
    /**
     * @author by 雨听风说
     * @Classname User
     * @Description TODO(用户的JavaBean)
     * @Date 2020/5/13 17:09
     */
    
    @Entity
    @Table(name = "user")
    public class User {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
        /*
        @Column属性:当数据库的列明与实体类的属性名一致的时候可以不用配置
         */
        @Column(name = "username")
        private String username;
    
        @Column(name = "password")
        private String password;
    
        @Column(name = "name")
        private String name;
    
       //此处省略setter和getter方法... ...
    }

    编写测试类

    package xyz.ytfs.test;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import xyz.ytfs.SpringBootJpaApplication;
    import xyz.ytfs.repository.UserRepository;
    
    /**
     * @author by 雨听风说
     * @Classname JpaTest
     * @Description TODO(JPA的测试)
     * @Date 2020/5/13 17:18
     */
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = SpringBootJpaApplication.class)
    public class JpaTest {
    
        @Autowired
        private UserRepository userRepository;
    
         @Test
         public void testFindALl() {
            this.userRepository.findAll().forEach(System.out::println);
         }
    
    
    }

    控制台打印信息


    集成Redis--为了测试方便使用windows版的Redis

    添加Redis起步依赖

    <!-- 配置redis 的启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    启动redis服务器



    配置Redis连接信息

    #DB Configuration
    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
        username: root
        password: root
        type: com.alibaba.druid.pool.DruidDataSource
      jpa:
        database: mysql
        show-sql: true
        generate-ddl: false
        hibernate:
          ddl-auto: update
          #redis
      redis:
        port: 6399
        host: 127.0.0.1

    注入RedisTemplate测试redis

    package xyz.ytfs.test;
    
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.junit.Test;
    import org.junit.platform.commons.util.StringUtils;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.test.context.junit4.SpringRunner;
    import xyz.ytfs.SpringBootJpaApplication;
    import xyz.ytfs.entity.User;
    import xyz.ytfs.repository.UserRepository;
    
    import java.util.List;
    
    /**
     * @author by 雨听风说
     * @Classname RedisTest
     * @Description TODO(Redis 测试)
     * @Date 2020/5/13 20:55
     */
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = SpringBootJpaApplication.class)
    public class RedisTest {
        /*
        泛型代表的是key-value的类型
         */
        @Autowired
        private RedisTemplate<String, String> redisTemplate;
    
        @Autowired
        private UserRepository repository;
    
        /*
        jackson的序列化工具,springBoot自动集成redis
         */
        private static final ObjectMapper MAPPER = new ObjectMapper();
        
         @Test
         public void test() throws JsonProcessingException {
    
            //1.从Redis中获取数据  数据格式json字符串
             String usersJson = this.redisTemplate.boundValueOps("user.findAll").get();
    
             //2.判断redis中书否存在这个数据
             if (StringUtils.isBlank(usersJson)){
    
                 //3.不存在:数据库查询
                 List<User> users = this.repository.findAll();
    
                 //将查询出的数据存储到redis缓存中,先将users集合转换成json格式字符串  使用jackson进行转换
                 usersJson = MAPPER.writeValueAsString(users);
    
                 //存储在redis中
                 this.redisTemplate.boundValueOps("user.findAll").set(usersJson);
                 System.out.println("---------------------------------------");
                 System.out.println(""从数据库中查询数据" = " + "从数据库中查询数据");
    
             }else {
    
                 System.out.println(""从redis中获取数据" = " + "从redis中获取数据");
             }
    
             //4.存在:直接返回(测试直接在控制台打印)
             System.out.println("usersJson = " + usersJson);
    
    
         }
        
    }

    第一次执行

    从数据库中获取数据


    第二次执行

    从redis中获取数据



    打开redis可视化工具(redis desktop manager),发现键值已存在



  • 相关阅读:
    危险的DDD聚合根
    为什么要使用CQRS和Event Sourcing
    LMAX架构简介
    一点纯哲学
    AgileEAS.NET平台开发案例药店系统需求分析
    AgileEAS.NET平台开发实例药店系统功能发布[模块注册][上]
    AgileEAS.NET平台开发实例药店系统数据库设计
    AgileEAS.NET平台开发案例药店系统项目说明
    AgileEAS.NET平台开发实例药店系统功能发布[权限配置][下]
    AgileEAS.NET平台开发实例药店系统数据库还原
  • 原文地址:https://www.cnblogs.com/TJ21/p/12885328.html
Copyright © 2011-2022 走看看