精品欧美激情精品一区,亚洲自拍的二区三区,亚洲综合精品一区二区,国产伦精品一区二区三区视频免费


學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

不想寫SQL了嗎? 快來(lái)學(xué)習(xí)Spring Boot JPA吧

來(lái)源:北大青鳥總部 2023年02月07日 13:33

摘要: Spring Data JPA是基于Spring Data框架實(shí)現(xiàn)JPA規(guī)范的一個(gè)持久層抽象,Spring Data JPA底層實(shí)現(xiàn)了Hibernate框架,所以在使用的過(guò)程中可以少寫很多SQL,極大的提高了開發(fā)效率。

背景介紹

自從踏上了后端程序猿這條路,從此就和數(shù)據(jù)庫(kù)結(jié)下了不解之緣,每天都要CRUD

我們?cè)谑褂肧pring Boot的時(shí)候,有兩種常用的操作數(shù)據(jù)庫(kù)方案,一種是使用MyBatis框架,另一種就是Spring Data JPA,而且Spring Boot官方默認(rèn)支持的也是Spring Data JPA,從名字上也能看出來(lái),當(dāng)然是因?yàn)樗蚐pring是一家人了。

為什么這么說(shuō)呢?舉個(gè)例子:如果大家用過(guò)MyBatis的話應(yīng)該會(huì)發(fā)現(xiàn),MyBatis依賴的artifactId是mybatis-spring-boot-starter,而接下來(lái)我們要講的Spring Data JPA依賴的artifactId卻是spring-boot-starter-data-jpa,從這個(gè)名字關(guān)鍵字(mybatis、jpa)的順序上,就可以看出來(lái)誰(shuí)才是親生的。



Tips

通常情況下Spring Boot官方支持的技術(shù),在起名字的時(shí)候都是以spring-boot-starter-xxx來(lái)命名,而第三方主動(dòng)適配Spring Boot的技術(shù),通常名字都是xxx-spring-boot-starter的命名方式。

接下來(lái)我們就來(lái)一起看下這個(gè)親生的"兒子"為什么值得我們學(xué)習(xí)。


什么是Spring Data JPA

首先,來(lái)看下什么是Spring Data JPA,是Spring生態(tài)中,基于Spring Data框架實(shí)現(xiàn)JPA規(guī)范的一個(gè)持久層抽象,Spring Data JPA底層實(shí)現(xiàn)了Hibernate框架,所以在使用的過(guò)程中可以少寫很多SQL,因?yàn)榇蟛糠只A(chǔ)的CRUD方法Spring Data JPA都已經(jīng)幫我們實(shí)現(xiàn)了,幾乎可以在不寫具體實(shí)現(xiàn)代碼的情況下完成對(duì)數(shù)據(jù)庫(kù)的操作,除了基礎(chǔ)的CRUD操作外,Spring Data JPA還提供了諸如分頁(yè)、排序等常用功能,極大的提高了開發(fā)效率。


Spring Data JPA進(jìn)行持久層開發(fā)

接下來(lái),就開始進(jìn)入實(shí)戰(zhàn)環(huán)節(jié),通過(guò)一個(gè)小案例,來(lái)體驗(yàn)Spring Data JPA的高效


準(zhǔn)備數(shù)據(jù)

常言道:"工欲善其事,必先利其器",這句話放在程序開發(fā)中也是非常適合的。

在開始之前呢我們要先準(zhǔn)備數(shù)據(jù),使用Navicat(可以自選)先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),命名為kgc。數(shù)據(jù)庫(kù)創(chuàng)建好之后,創(chuàng)建一張用戶表,表名為t_user ,添加三列數(shù)據(jù),列名分別是:

? id 唯一標(biāo)記

? username 用戶名稱

? age 年齡

插入三條數(shù)據(jù),數(shù)據(jù)庫(kù)腳本如下:

# 數(shù)據(jù)庫(kù)腳本文件
SET NAMES utf8mb4;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`age` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
# 插入數(shù)據(jù)
INSERT INTO `t_user`(username, age) VALUES ('張三', '18');
INSERT INTO `t_user`(username, age) VALUES ( '李四', '20');
INSERT INTO `t_user` (username, age) VALUES ('王五', '22');


添加POM依賴

數(shù)據(jù)準(zhǔn)備好之后,就可以開始集成Spring Data JPA了,使用SpirngBoot Initializr 創(chuàng)建SpringBoot基礎(chǔ)工程,因?yàn)槲覀兪亲龀志脤娱_發(fā),所以此時(shí)需要添加一些數(shù)據(jù)庫(kù)相關(guān)的依賴

數(shù)據(jù)庫(kù)驅(qū)動(dòng)依賴

這里如果不指定版本默認(rèn)是8.0的版本,當(dāng)然你也可以指定版本

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>


添加Spring Data JPA依賴

<!-- Spring Data JPA依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

如果你不想手動(dòng)添加依賴,也可以在創(chuàng)建項(xiàng)目的時(shí)候通過(guò)工具選擇,如下圖:



添加JPA相關(guān)配置項(xiàng)

在application.properties屬性配置文件中配置兩部分內(nèi)容:

數(shù)據(jù)源

jpa相關(guān)配置

#配置數(shù)據(jù)源信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/kgc?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
# 加載hibernate自動(dòng)更新數(shù)據(jù)庫(kù)結(jié)構(gòu)
spring.jpa.hibernate.ddl-auto=update
# 控制臺(tái)輸出sql語(yǔ)句
spring.jpa.show-sql=true


創(chuàng)建實(shí)體類

創(chuàng)建User,并實(shí)現(xiàn)序列化接口Serializable,要注意實(shí)體類上的這些注解的使用

@Table(name="t_user")//table指的是和哪個(gè)表映射 默認(rèn)是user
@Entity(name = "t_user") //實(shí)體類名和數(shù)據(jù)庫(kù)表名映射
public class User implements Serializable{
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Integer id; // 用戶id
@Column(name = "username")
private String username; //用戶名
@Column(name = "age")
private Integer age; // 年齡
// 省略 setter、getter方法
}


@Entity:表示這是一個(gè)實(shí)體類,項(xiàng)目啟動(dòng)時(shí)會(huì)自動(dòng)針對(duì)該類生成一張表,默認(rèn)的表名為類名,name屬性表示自定義生成的表名。

? @Id:表示這個(gè)字段是一個(gè)id

? @GeneratedValue:表示主鍵的自增長(zhǎng)策略

? @Column:表示根據(jù)屬性名在表中生成相應(yīng)的字段,如果字段名和屬性名不相同,可以使用name屬性指定


創(chuàng)建一個(gè) UserRepository接口

要注意的是用戶模塊的UserRepository接口,這里暫時(shí)不需要寫任何方法,因?yàn)镴paRepository已經(jīng)幫我們實(shí)現(xiàn)了很多常用的方法,如果需要使用特殊的方法可以自定義。

public interface UserRepository extends JpaRepository<User, Integer> {
}


默認(rèn)實(shí)現(xiàn)的方法,如下:



這些方方法,基本滿足了我們?nèi)粘5腃RUD操作,大家可以跟著這個(gè)案例,試一次其他的這些方法


是騾子是馬,拉出來(lái)遛遛

接下來(lái)就可以編寫測(cè)試程序進(jìn)行驗(yàn)證,查詢所有的用戶信息

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class DemoApplicationTests {
@Autowired
private UserRepository userRepository;

/**
* 查詢所有用戶
*/
@Test
public void testSpringDataJpa() {
// 調(diào)用findAll方法,查詢所有用戶
List<User> userList = userRepository.findAll();
for (User user : userList) {
System.out.println(user);
}
}}


可以看到控制臺(tái)輸入了如下數(shù)據(jù),成功查詢出了所有的用戶數(shù)據(jù),到此,大功告成,而我們一個(gè)SQL語(yǔ)句也沒(méi)有寫。Spring Data JPA幫我們節(jié)省了很多陪女朋友的時(shí)間,是不是很贊呢,從此以后再也不用擔(dān)心寫SQL了。



標(biāo)簽: spring boot jpa
熱門班型時(shí)間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計(jì)全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運(yùn)營(yíng)班 爆滿開班
報(bào)名優(yōu)惠
免費(fèi)試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接
精品欧美激情精品一区,亚洲自拍的二区三区,亚洲综合精品一区二区,国产伦精品一区二区三区视频免费
美女高潮久久久| 欧美日韩亚洲一区二区三区在线观看| 久99久视频| 日本高清免费不卡视频| 欧美videos大乳护士334| 亚洲色图一区二区| 国内精品国产成人国产三级粉色| 97久久人人超碰caoprom欧美| 亚洲va韩国va欧美va精四季| 欧美一区二区三区人| 亚洲欧美日韩在线不卡| 国产一区二区三区四| 精品国产一区二区三区麻豆小说| 91成人网在线| 国产精品天美传媒| 久久国产尿小便嘘嘘尿| 国产欧美日韩视频一区二区三区| 一本在线高清不卡dvd| 国产色91在线| 久久精品久久99精品久久| 国产麻豆日韩| 欧美另类z0zxhd电影| 亚洲男人天堂av网| 高清成人免费视频| 天天综合色天天综合色hd| 精品国产免费一区二区三区香蕉| 亚洲妇女屁股眼交7| 91蜜桃在线免费视频| 一本色道a无线码一区v| 欧美激情综合五月色丁香| 久久69国产一区二区蜜臀 | 欧美日韩日日骚| 亚洲欧洲99久久| 国产91精品精华液一区二区三区| 视频一区视频二区视频三区高| 欧美电影精品一区二区| 午夜免费久久看| 成人av免费看| 91精选在线观看| 亚洲地区一二三色| 国产精品永久入口久久久| 欧美日韩夫妻久久| 亚洲一区二区三区小说| 91亚洲男人天堂| 欧美乱熟臀69xxxxxx| 亚洲自拍偷拍麻豆| 99久久综合狠狠综合久久止| 欧美日韩精品高清| 亚洲福利一区二区| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 亚洲人精品午夜| 99久久99久久综合| 欧美人xxxx| 午夜精品123| 精品视频一区在线| 26uuu另类欧美| 激情图片小说一区| 在线观看一区欧美| 亚洲乱码国产乱码精品精小说 | 免费日韩伦理电影| 欧美日韩免费精品| 国产农村妇女毛片精品久久麻豆| 国产精品一区二区无线| 色婷婷精品久久二区二区蜜臀av| 亚洲天堂免费在线观看视频| 96av麻豆蜜桃一区二区| 4hu四虎永久在线影院成人| 天天av天天翘天天综合网色鬼国产| 国内一区二区在线视频观看| www国产精品av| 国产福利精品一区二区| 欧美亚洲综合一区| 婷婷成人激情在线网| 欧美色图亚洲自拍| 最新久久zyz资源站| 91国产丝袜在线放| 欧美电视剧免费观看| 国产精品一区不卡| 欧美日韩一区二区欧美激情| 日韩激情一二三区| 亚洲精品高清国产一线久久| 亚洲日本中文字幕区| 国产精品综合久久久久久| 久久综合成人精品亚洲另类欧美| 国产白丝精品91爽爽久久| 欧美蜜桃一区二区三区| 美女脱光内衣内裤视频久久网站 | 日韩电影大全在线观看| 亚洲人成精品久久久久久| 国产精品一码二码三码在线| 精品粉嫩超白一线天av| 处破女av一区二区| 日韩一区二区三区观看| 国产精品系列在线观看| 在线91免费看| 国产一区二区按摩在线观看| 欧美日韩国产一级二级| 久久机这里只有精品| 日本精品一级二级| 免费观看在线色综合| 欧美在线小视频| 蜜臀av性久久久久蜜臀aⅴ| 色久综合一二码| 日本不卡的三区四区五区| 一道本成人在线| 免费成人你懂的| 欧美在线免费播放| 国内精品伊人久久久久影院对白| 欧美老年两性高潮| 国产剧情一区二区三区| 91精品国产综合久久国产大片| 国产精品一区二区三区四区| 欧美一级免费观看| www.在线欧美| 日本一区二区综合亚洲| 国产一区二区三区无遮挡| 亚洲欧洲www| 日本一区二区三不卡| 亚洲成a人v欧美综合天堂| 色综合一个色综合| 激情综合网最新| 日韩一区二区免费电影| 99精品热视频| 国产精品免费观看视频| 另类视频在线观看+1080p| 亚洲一区在线电影| 色婷婷亚洲综合| 国产一区二区导航在线播放| 日韩欧美国产系列| 91精品网站| 亚洲欧美日韩小说| 一区二区三区av在线| 精品在线亚洲视频| 欧美成人女星排名| 国产伦精品一区二区三区四区免费| 亚洲男人的天堂网| 一本大道久久a久久精品综合| 九九精品视频在线看| 日韩女优视频免费观看| 91女神在线视频| 亚洲免费在线看| 色偷偷久久一区二区三区| 国产一区视频导航| 久久人人超碰精品| 蜜桃传媒视频麻豆第一区免费观看| 亚洲小说欧美激情另类| 欧美日韩亚洲综合在线 | 国产a精品视频| 日本一区二区三区四区在线视频| 久久久久久久免费| 日本女优在线视频一区二区| 91精品国产欧美一区二区成人| 5566中文字幕一区二区| 亚洲精品老司机| 欧美色网站导航| 99vv1com这只有精品| 亚洲精品水蜜桃| 欧美性大战久久久久久久| 不卡的av网站| 亚洲色图另类专区| 欧美在线免费视屏| 91免费国产视频网站| 亚洲综合色丁香婷婷六月图片| 在线观看av不卡| 97超碰欧美中文字幕| 亚洲香肠在线观看| 91精品国产综合久久精品图片| 国产精品v欧美精品v日韩| 亚洲成a人片在线不卡一二三区| 欧美精品乱人伦久久久久久| 成人免费视频网站入口| 午夜精品在线看| 精品免费国产一区二区三区四区| 免费久久久一本精品久久区| 精品一区二区三区免费播放| 久久久.com| 色综合婷婷久久| **亚洲第一综合导航网站| 亚洲大片在线观看| 精品国产免费人成在线观看| 色噜噜狠狠色综合网| 成人精品一区二区三区四区| 亚洲精品国产成人久久av盗摄 | 正在播放久久| 91免费观看视频在线| 天天色综合天天| 久久久www免费人成精品| 伊人久久大香线蕉午夜av| 97久久精品人人爽人人爽蜜臀| 亚洲福利电影网| 久久久久久一二三区| 一道本成人在线| 国产成人av一区二区三区| 麻豆国产欧美一区二区三区| 国产精品欧美一级免费| 欧美日韩日日摸| 日本精品二区| 99re热视频精品| 美女视频一区二区| 亚洲欧美在线视频|