springboot jpa使用

jpa系列:
springboot jpa使用
springboot jpa 關(guān)系注解和mappedBy
springboot jpa自定義查詢



前言:
1.jpa(Java Persistence API)看作是hibernate的一個高級封裝庫。日志中顯示執(zhí)行的語句是經(jīng)過jpa處理后的sql語句。比起jdbc更加方便(jdbc你還要自己編寫大量sql語句等等操作)

2.IDE為idea,配置文件為yml,數(shù)據(jù)庫為mysql,maven依賴需要jpa和mysql,到中央倉庫直接查/百度其他文章就行

3.你還需要:在mysql里面建好數(shù)據(jù)庫和一張表,設(shè)置好用戶名和密碼

4.中途看的煩躁,建議拉到結(jié)尾看總結(jié)再回頭看


application.yml 配置:

spring:
  jpa:
    #設(shè)置數(shù)據(jù)庫為mysql
    database: mysql
    #顯示執(zhí)行的語句(開了能在日志看到j(luò)pa執(zhí)行的sql語句)
    show-sql: true
    #自行百度,不累述
    hibernate:
      ddl-auto: update

  datasource:
    url: jdbc:mysql://localhost:3306/數(shù)據(jù)庫名?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    username: root
    password: root

注意jpa和datasource在spring范圍下(即注意yml的格式),賬戶密碼和數(shù)據(jù)庫名等東西自己看著改,后面那一大段uesXX=xx的用翻譯看一下就知道了,可加可不加,防bug而已


Entity (實體,一個javabean類):一個表對應一個實體類。

依靠注解實現(xiàn)對應:類成員---表的各列。這里直接轉(zhuǎn)大佬博客
Jpa 實體類常用注解
個人JPA參考手冊

可以偷懶不人工寫這一大堆東西,直接使用idea的jpa工具生成代碼(建議):
idea 從數(shù)據(jù)庫快速生成Spring Data JPA實體類


DAO

寫一個接口繼承JpaRepository<T,ID>,在service層用@Resource注入這個DAO,然后直接使用這個DAO的對象來操作就行。其中T為實體類,ID為主鍵的類型(Entity中@ID注解那個)

FAQ:
誰來實現(xiàn)這個接口?
獲取注解后交由jpa進行處理實現(xiàn),不信逐步調(diào)試跟蹤看看。(有了注解就能夠像元編程那樣,對代碼進行編程,即生成所需的代碼,詳情右轉(zhuǎn)java注解)

JpaRepository<T,ID>接口只有幾個方法,我還需要額外的怎么辦?
直接在你的接口中聲明一個“規(guī)范的函數(shù)名”即可。
比如你想根據(jù)username來查詢一個用戶,那么接口寫一個findByUsername()方法即可。在idea里面看下自動補齊估計就能理解了,jpa能夠根據(jù)這些方法名生成對應的操作。提醒一下,要是不按照規(guī)范寫一些"toGetUsername"這些jpa不認的方法名,是沒有效果的。


總結(jié)和坑

1.一個典型例子:spring-boot-jpa-thymeleaf-curd

2.在數(shù)據(jù)庫弄好、必須的兩三行jpa配置弄好后,和數(shù)據(jù)庫打交道只需:
(1)寫一個與表對應的類(可自動生成,賊爽)

(2)寫一個接口繼承jpa提供的接口,視需求再聲明幾個方法進去,jpa能夠智能自動的實現(xiàn)你所聲明的方法。(方法名靠idea自動補齊即可不用記憶細節(jié))

3.關(guān)于駱駝峰與下劃線的問題:
spring.jpa.hibernate.naming.physical-strategy設(shè)置的影響,默認ImprovedNamingStrategy,會把@Column由駱駝峰轉(zhuǎn)換為下劃線來對應數(shù)據(jù)庫表的列名。如果數(shù)據(jù)庫存在駱駝峰的字段,這個設(shè)置改為PhysicalNamingStrategyStandardImpl即可(看idea自動補全,需要加一些前綴,這里不打了)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容