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方面的內容:
- 一套API標準。在javax.persistence的包下面,用來操作實體對象,執行CRUD操作,框架在後臺替代我們完成所有的事情,開發者從煩瑣的JDBC和SQL代碼中解脫出來。
- 面向對象的查詢語言:Java Persistence QueryLanguage(JPQL)。這是持久化操作中很重要的一個方面,通過面向對象而非面向數據庫的查詢語言查詢數據,避免程序的SQL語句緊密耦合
- 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;
}
}
第八步:測試