首先進行目錄展示:
整合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服務器!