springBoot整合Spring-Data-JPA, Redis Redis-Desktop-Manager2020 windows
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),发现键值已存在
本文来自博客园,作者:BaldHead,转载请注明原文链接:https://www.cnblogs.com/strict/p/12885328.html