摘要:以前都是用進(jìn)行數(shù)據(jù)庫的開發(fā),最近學(xué)習(xí)之后發(fā)現(xiàn)顯得更友好,所以我們就一起來了解一下的原理吧。簡單介紹持久性是的一個規(guī)范。它用于在對象和關(guān)系數(shù)據(jù)庫之間保存數(shù)據(jù)。充當(dāng)面向?qū)ο蟮念I(lǐng)域模型和關(guān)系數(shù)據(jù)庫系統(tǒng)之間的橋梁。是標(biāo)識出主鍵是指定主鍵的自增方式。
以前都是用Mybatis進(jìn)行數(shù)據(jù)庫的開發(fā),最近學(xué)習(xí)Spring Boot之后發(fā)現(xiàn)JPA顯得更友好,所以我們就一起來了解一下JPA的原理吧。
Spring Data JPA JPA簡單介紹Java持久性API(JPA)是Java的一個規(guī)范。 它用于在Java對象和關(guān)系數(shù)據(jù)庫之間保存數(shù)據(jù)。
JPA充當(dāng)面向?qū)ο蟮念I(lǐng)域模型和關(guān)系數(shù)據(jù)庫系統(tǒng)之間的橋梁。由于JPA只是一個規(guī)范,它本身不執(zhí)行任何操作。它需要一個實現(xiàn)。因此,像Hibernate,TopLink和iBatis這樣的ORM工具實現(xiàn)了JPA數(shù)據(jù)持久性規(guī)范。
Spring Data JPA 是 Spring 基于 ORM 框架、JPA 規(guī)范的基礎(chǔ)上封裝的一套JPA應(yīng)用框架,可使開發(fā)者用極簡的代碼即可實現(xiàn)對數(shù)據(jù)的訪問和操作。它提供了包括增刪改查等在內(nèi)的常用功能,且易于擴(kuò)展!學(xué)習(xí)并使用 Spring Data JPA 可以極大提高開發(fā)效率!
基本查詢Spring Data JPA已經(jīng)實現(xiàn)了一部分基礎(chǔ)的數(shù)據(jù)庫操作,包括基本的增刪改查。
第一,需要在pom.xml里面引入相關(guān)的依賴。
mysql mysql-connector-java org.springframework.boot spring-boot-starter-data-jpa
第二,需要在application.properties配置文件中添加數(shù)據(jù)庫的相關(guān)配置及jpa的相關(guān)配置
#配置數(shù)據(jù)源 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/springboot spring.datasource.username=username spring.datasource.password=password #jpa數(shù)據(jù)庫表格創(chuàng)建的方式,和控制臺sql的打印 jpa.hibernate.ddl-auto=update jpa.hibernate.show-sql=true
第三,寫實體類。
正常情況下我們在實體類上加入注解@Entity,就會讓實體類和表相關(guān)連。
如果其中某個屬性我們不需要和數(shù)據(jù)庫來關(guān)聯(lián)只是在展示的時候做計算,只需要加上@Transient屬性既可。
@Id 是標(biāo)識出主鍵
@GeneratedValue是指定主鍵的自增方式。
第四,寫查詢方法。
寫一個接口實現(xiàn)JpaRepository接口即可:
JpaRepository后面需要添加兩個參數(shù),一個是實體類,另一個是主鍵的類型。
繼承JpaRepository之后,就可以使用簡單的增刪改查功能了。
@Test public void testBaseQuery() throws Exception { Girl girl=new Girl(); userRepository.findAll(); userRepository.findOne(1); userRepository.save(girl); userRepository.delete(girl); // ... }自定義簡單查詢
因為這只能滿足我們的基本查詢,如果不想按照他給的查詢的話我們就需要自己寫查詢語句了嗎?答案肯定是否定的了。我們還是可以按照J(rèn)PA的規(guī)則生成一些查詢語句的。
自定義的簡單查詢就是根據(jù)方法名來自動生成SQL,主要的語法是findXXBy,readAXXBy,queryXXBy,countXXBy,getXXBy后面跟屬性名稱:復(fù)雜查詢
這里就需要我們自己寫sql了,我們來看一下需要注意的地方。
在SQL的查詢方法上面使用@Query注解,如涉及到刪除和修改在需要加上@Modifying.也可以根據(jù)需要添加@Transactional 對事物的支持,查詢超時的設(shè)置等。
注意:如果在寫Query的時候,HQL語句中表名應(yīng)該是ORM映射的類名。
//傳單個值的時候 @Query("select u from User u where u.age = ?#{[0]}") ListfindUsersByAge(int age); //傳多個值的時候 @Query("select u from User u where u.firstname = :#{#customer.firstname}") List findUsersByCustomersFirstname(@Param("customer") Customer customer);
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71716.html
摘要:教程簡介本項目內(nèi)容為教程樣例。目的是通過學(xué)習(xí)本系列教程,讀者可以從到掌握的知識,并且可以運(yùn)用到項目中。本章將進(jìn)一步講解,結(jié)合完成數(shù)據(jù)層訪問。創(chuàng)建控制器在下面創(chuàng)建控制器用于測試訪問程序運(yùn)行和調(diào)試在類中,啟動程序。 教程簡介 本項目內(nèi)容為Spring Boot教程樣例。目的是通過學(xué)習(xí)本系列教程,讀者可以從0到1掌握spring boot的知識,并且可以運(yùn)用到項目中。如您覺得該項目對您有用,...
摘要:前提好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時間比較早,而且堅持的時間也比較久,一直到現(xiàn)在也是一直保持著更新狀態(tài)。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時...
摘要:忽略該字段的映射省略創(chuàng)建數(shù)據(jù)訪問層接口,需要繼承,第一個泛型參數(shù)是實體對象的名稱,第二個是主鍵類型。 SpringBoot 是為了簡化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴就可以輕易的搭建出一個 WEB 工程 上一篇介紹了Spring JdbcTempl...
閱讀 2624·2021-11-18 10:07
閱讀 1083·2021-08-03 14:04
閱讀 726·2019-08-30 13:08
閱讀 2579·2019-08-29 15:33
閱讀 1087·2019-08-29 14:07
閱讀 2985·2019-08-29 14:04
閱讀 1435·2019-08-29 11:19
閱讀 1144·2019-08-29 10:59