boot整合jpa

一.pom.xml

1.代碼塊

<parent>
    <!-- boot啓動器 -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
</parent>
<dependencies>
    <!-- springBoot 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>
    <!-- spring測試的啓動器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- springBootWeb啓動器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 配置使用redis啓動器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
</dependencies>

2.範例

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JQFIODVU-1590489256561)(https://uploader.shimo.im/f/LTlba2UvA8olpRlW.png!thumbnail)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-RNCOxwS9-1590489256562)(https://uploader.shimo.im/f/bSAJXMqnv5Vs5gyN.png!thumbnail)]

二.配置文件

1.代碼塊

#DB Configuration:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db2?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
#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
#Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379

2.範例

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gxYok9DK-1590489256564)(https://uploader.shimo.im/f/yNZx4NVsqSkLg6lL.png!thumbnail)]

三.啓動類

1.代碼塊

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * springBoot整合jpa
 */
@SpringBootApplication
public class BootAppliacation {
    public static void main(String[] args) {
        SpringApplication.run(BootAppliacation.class, args);
    }
}

2.範例

圖片

四.dao層

1.代碼塊

import com.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;

public interface UserMapper extends JpaRepository<User,Integer>, JpaSpecificationExecutor<User> {
    public List<User> findAll();
}

2.範例

圖片

五.pojo層

1.代碼塊

import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "user")
public class User implements Serializable {
    @Id
    @GeneratedValue
    @Column(name = "id")
    private Integer id;
    @Column(name = "username")
    private String username;
    @Column(name = "password")
    private String password;
    @Column(name = "name")
    private String name;
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer 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;
    }
}

2.範例

圖片

六.測試類一【jpa】

1.代碼塊

import com.BootAppliacation;
import com.mapper.UserMapper;
import com.pojo.User;
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= com.BootAppliacation.class)
public class UserTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void test1(){
        List<User> users = userMapper.findAll();
        System.out.println(users);
    }
}

2.範例

圖片

七.測試類二【redis】

1.代碼塊

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mapper.UserMapper;
import com.pojo.User;
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.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest(classes= com.BootAppliacation.class)
public class RedisTest {
    @Autowired
    private RedisTemplate<String,String> redisTemplate;
    @Autowired
    private UserMapper userMapper;
    @Test
    public void test1() throws JsonProcessingException {
        //1.從redis獲取數據,數據形式爲json字符串
        String userListJson = redisTemplate.boundValueOps("user.findAll").get();
        //2.判斷redis是否存在數據
        if (null == userListJson) {
            //3.1如果不存在,則從數據庫查詢
            List<User> users = userMapper.findAll();
            //3.2查詢的數據存儲到redis緩存
            //3.2.1使用jackson進行數據類型轉換
            ObjectMapper objectMapper = new ObjectMapper();
            //3.2.2將list轉換爲json字符串
            userListJson = objectMapper.writeValueAsString(users);
            //3.3存儲到redis緩存中
            redisTemplate.boundValueOps("user.findAll").set(userListJson);
            System.out.println("-----------從數據庫查詢--------");
            System.out.println(userListJson);
        }else {
            //5.打印數據驗證結果
            System.out.println("-------從redis緩存獲取數據------");
            System.out.println(userListJson);
        }
    }
}

2.範例

圖片

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-rHH1XW58-1590489256571)(https://uploader.shimo.im/f/ZRgaY3pOJeom4If3.png!thumbnail)]

八.源碼

day02.rar

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章