springboot整合Spring Data JPA

Spring_Boot專欄
上一篇 主目錄 下一篇

【前言】
Repository來操作數據表


1 Spring Data簡介

Spring Data項目目的是簡化構建基於Spring框架應用的數據訪問技術,包括關係型數據庫、非關係型數據庫、Map-Reduce框架,雲數據服務等,其子項目有:

  • Spring Data common- 支持每個Spring Data模塊的Core Spring概念。
  • Spring Data JDBC- 對JDBC的Spring Data存儲庫支
  • Spring Data JPA - (簡化對關係型數據庫的訪問操作)對JPA的Spring Data存儲庫支持。
  • Spring Data MongoDB - 對MongoDB的基於Spring對象文檔的存儲庫支持。
  • Spring Data Redis - 從Spring應用程序輕鬆配置和訪問Redis。
  • Spring Data JDBC Ext-支持標準JDBC的數據庫特定擴展,包括對Oracle RAC快速連接故障轉移的支持,AQ JMS支持以及對使用高級數據類型的支持。
  • Spring Data KeyValue - Map基於庫和SPI輕鬆建立鍵值存儲一個Spring數據模塊。

SpringData爲我們提供統一的API來對數據層來進行操作,通過 Spring Data common來實現, Spring Data common讓我們在使用關係型數據庫或者非關係型數據庫訪問技術時都基於Spring提供的統一接口,包含了CRUD(創建、獲取、更新、刪除)、查詢、排序和分頁的相關操作。

2 什麼是JPA

https://www.cnblogs.com/youqc/p/11095574.html

JPA是Java Persistence API的簡稱,中文名爲Java持久層API,是JDK 5.0註解或XML描述對象-關係表的映射關係,並將運行期的實體對象持久化到數據庫中。

JPA包括以下3方面的內容:

  1. 一套API標準。在javax.persistence的包下面,用來操作實體對象,執行CRUD操作,框架在後臺替代我們完成所有的事情,開發者從煩瑣的JDBC和SQL代碼中解脫出來。
  2. 面向對象的查詢語言:Java Persistence QueryLanguage(JPQL)。這是持久化操作中很重要的一個方面,通過面向對象而非面向數據庫的查詢語言查詢數據,避免程序的SQL語句緊密耦合
  3. ORM(object/relational metadata)元數據的映射。JPA支持XML和JDK5.0註解兩種元數據的形式,元數據描述對象和表之間的映射關係,框架據此將實體對象持久化到數據庫表中。

3 Spring Data JPA

3.1 簡介

Spring Data JPA底層用hibernate實現
在這裏插入圖片描述

在這裏插入圖片描述
統一的Repository接口:

Repository:統一接口
CrudRepository:基本CRUD操作
PagingAndSortingRepository:基本的CRUD及分頁排序
JpaRepository:從以下繼承結構來看具有以上三個父類的功能,能夠實現基本的CRUD和分頁排序功能

在這裏插入圖片描述

3.2 springboot整合SpringDataJPA

第一步:新建項目
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
第二步:配置數據庫連接
src\main\resources\application.yml

spring:
  #連接數據庫
  datasource:
    url: jdbc:mysql://localhost/jpa?serverTimezone=UTC
    username: root
    password: 123456

注:數據庫名:jpa。數據庫已經有了,空的數據庫,沒有表,配置spring.jpa.hibernate.ddl-auto: update後啓動時會自動生成或更新表。要加上?serverTimezone=UTC

第三步:編寫實體類對象和數據表進行映射並配置好映射關係
com.shane.springbootdatajpa.entities.User

@Data//getter/setter/toString
@Entity//表明這是實體類(和數據表映射的類)
@Table(name = "tb_user")//與數據庫對應的表,默認爲user
public class User {
    @Id//主鍵
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主鍵
    private Integer id;

    @Column(name = "last_name",length = 20)//列
    private String lastName;

    @Column//省略默認列名爲屬性名
    private String email;
}

第四步:編寫Dao接口類來操作實體類對應的數據表(Repository
com.shane.springbootdatajpa.repository.UserRepository

//繼承JPARepository來完成對數據庫的操作.
// <User,Integer>泛型User是要操作的entity,Integer是entities.User.class中主鍵的類型
public interface UserRepository extends JpaRepository<User,Integer> {
}

不用加註解,UserRepository 繼承提供JpaRepository,提供數據庫操縱的基本方法,直接調用即可
第五步:編寫jpa配置
src\main\resources\application.yml

spring:
  #配置jpa.與datasource在同一級別.
  #靠左輸入spring.jpa.hiXXX後Enter自動生成格式化代碼
  jpa:
    hibernate:
      #ddl數據定義語言:update代表更新或者創建數據表。只會創建一次
      ddl-auto: update
    #在控制檯顯示sql語句
    show-sql: true

第六步:啓動主程序,創建表

在這裏插入圖片描述

在這裏插入圖片描述
第七步:在控制器中使用

//跳過service
@RestController
public class UserController {
    @Autowired
    UserRepository userRepository;

    @GetMapping("/user/{id}")
    public User getUserById(@PathVariable("id") Integer id){
        User user = userRepository.findById(id).orElse(null);
        return user;
    }

    @PostMapping("/user")
    public User insertUser(User user){
        User save = userRepository.save(user);
        return save;
    }
}

第八步:測試

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

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