首先进行目录展示:
整合Spring Data JPA
添加Spring Data JPA的起步依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
添加数据库驱动依赖
<!-- MySQL连接驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
在application.properties中配置数据库和jpa的相关属性
#数据库配置信息 spring.datasource.driverClassCame=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456 #JPA Configuration: spring.jpa.database=MySQL spring.jpa.show-sql=true spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
创建实体配置实体

import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", name='" + name + '\'' + '}'; } }
@Entity标注该类为实体类
编写UserRepository
public interface UserRepository extends JpaRepository<User,Long> { public List<User> findAll(); }
编写测试类
import com.itheima.domain.User; import com.itheima.repository.UserRepository; 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 java.util.List; @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringbootJpaApplication.class) public class JpaTest { @Autowired private UserRepository userRepository; @Test public void test(){ List<User> all = userRepository.findAll(); System.out.println(all); } }
控制台打印信息
注意:如果是jdk9,执行报错,原因:jdk缺少相应的jar
解决方案:手动导入对应的maven坐标,如下:
<!--jdk9需要导入如下坐标--> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency>
整合redis
添加redis的起步依赖:
<!-- 配置使用redis启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>1.5.16.RELEASE</version> </dependency>
配置redis的连接信息
#Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
注入RedisTemplate测试redis操作
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.itheima.domain.User; import com.itheima.repository.UserRepository; 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.data.redis.core.RedisTemplate; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringbootJpaApplication.class) public class RedisTest { @Autowired private RedisTemplate<String,String> redisTemplate; @Autowired private UserRepository userRepository; @Test public void test() throws JsonProcessingException { //1.从redis中获得数据,数据形式json字符串 String userListJson = redisTemplate.boundValueOps("user.findAll").get(); //2.判断redis中是否存在数据 if (null==userListJson){ //3.不存在数据,从数据库中查询 List<User> all = userRepository.findAll(); //4.将查询出的数据存储到redis缓存中 //将list集合转换成json格式的字符串,使用jackson进行转换 ObjectMapper objectMapper = new ObjectMapper(); userListJson = objectMapper.writeValueAsString(all); redisTemplate.boundValueOps("user.findAll").set(userListJson); System.out.println("===============从数据库中查询=============="); }else{ System.out.println("===============从redis中查询=============="); } //4.将数据在控制台打印 System.out.println(userListJson); } }
测试前记得打开redis服务器!