国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring boot中使用Spring-data-jpa方便快捷的訪問數據庫(推薦)

Spring boot中使用Spring-data-jpa方便快捷的訪問數據庫(推薦)

2021-04-26 15:28fengcl Java教程

Spring Data JPA 是 Spring 基于 ORM 框架、JPA 規范的基礎上封裝的一套JPA應用框架,可使開發者用極簡的代碼即可實現對數據的訪問和操作。這篇文章主要介紹了Spring-boot中使用Spring-data-jpa方便快捷的訪問數據庫,需要的朋友可以參考下

什么是jpa

jpa(java persistence api)是sun官方提出的java持久化規范。它為java開發人員提供了一種對象/關聯映射工具來管理java應用中的關系數據。他的出現主要是為了簡化現有的持久化開發工作和整合orm技術

spring data jpa 是 spring 基于 orm 框架、jpa 規范的基礎上封裝的一套jpa應用框架,可使開發者用極簡的代碼即可實現對數據的訪問和操作。它提供了包括增刪改查等在內的常用功能,且易于擴展!學習并使用 spring data jpa 可以極大提高開發效率!

spring boot中使用jdbctemplate訪問數據庫

數據源配置

首先,為了連接數據庫需要引入jdbc支持,在pom.xml中引入如下配置

?
1
2
3
4
<dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-jdbc</artifactid>
</dependency>

嵌入式數據庫支持

嵌入式數據庫通常用于開發和測試環境。spring-boot提供自動配置的嵌入式數據庫有h2、hsql、derby,你不需要提供任何連接配置就能使用。

如h2的依賴

?
1
2
3
4
5
<dependency>
 <groupid>com.h2database</groupid>
 <artifactid>h2</artifactid>
 <scope>runtime</scope>
</dependency>

mysql數據庫支持

?
1
2
3
4
5
<dependency>
 <groupid>mysql</groupid>
 <artifactid>mysql-connector-java</artifactid>
 <version>5.1.38</version>
</dependency>

編輯配置信息

在 src/main/resources/application.properties 中配置數據源信息

?
1
2
3
4
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.driver

使用jdbctemplate操作數據庫

spring的jdbctemplate是自動配置的,你可以直接使用@autowired來注入到你自己的bean中來使用。

通過jdbctemplate實現demoservice中定義的數據訪問操作

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@service
public class demoserivce {
 @autowired
 private jdbctemplate jdbctemplate;
 public void create(string name, integer age) {
  jdbctemplate.update("insert into demo(name, age) values(?, ?)", name, age);
 }
 public void deletebyname(string name) {
  jdbctemplate.update("delete from demowhere name = ?", name);
 }
 public integer getalldemo() {
  return jdbctemplate.queryforobject("select count(1) from demo", integer.class);
 }
 public void deletealldemo() {
  jdbctemplate.update("delete from demo");
 }
}

創建對userservice的單元測試用例,通過創建、刪除和查詢來驗證數據庫操作的正確性。

測試用例要增加依賴

?
1
2
3
4
5
<dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-test</artifactid>
 <scope>test</scope>
</dependency>

測試代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@runwith(springjunit4classrunner.class)
@springapplicationconfiguration(main.class)
public class applicationtests {
 @autowired
 private demoserivce demoserivce;
 @before
 public void setup() {
 // 準備,清空表
 demoserivce.deletealldemo();
 }
 @test
 public void test() throws exception {
 // 插入5個
 demoserivce.create("a", 1);
 demoserivce.create("b", 2);
 demoserivce.create("c", 3);
 demoserivce.create("d", 4);
 demoserivce.create("e", 5);
 assert.assertequals(5, demoserivce.getalldemo().intvalue());
 demoserivce.deletebyname("a");
 demoserivce.deletebyname("e");
 // 查數據庫,應該有5個
 assert.assertequals(3, demoserivce.getalldemo().intvalue());
 }
}

spring boot中使用spring-data-jpa

為了解決這些大量枯燥的數據操作語句,我們第一個想到的是使用orm框架,比如:hibernate。通過整合hibernate之后,我們以操作java實體的方式最終將數據改變映射到數據庫表中。

為了解決抽象各個java實體基本的“增刪改查”操作,我們通常會以泛型的方式封裝一個模板dao來進行抽象簡化,但是這樣依然不是很方便,我們需要針對每個實體編寫一個繼承自泛型模板dao的接口,再編寫該接口的實現。雖然一些基礎的數據訪問已經可以得到很好的復用,但是在代碼結構上針對每個實體都會有一堆dao的接口和實現。

由于模板dao的實現,使得這些具體實體的dao層已經變的非常“薄”,有一些具體實體的dao實現可能完全就是對模板dao的簡單代理,并且往往這樣的實現類可能會出現在很多實體上。spring-data-jpa的出現正可以讓這樣一個已經很“薄”的數據訪問層變成只是一層接口的編寫方式。

使用方法

添加依賴

?
1
2
3
4
<dependency
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-data-jpa</artifactid>
</dependency>

編輯配置信息

在 src/main/resources/application.properties 中配置數據源信息

?
1
2
3
4
5
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update

spring.jpa.properties.hibernate.hbm2ddl.auto是hibernate的配置屬性,其主要作用是:自動創建、更新、驗證數據庫表結構。該參數的幾種配置如下

  • create: 每次加載hibernate時都會刪除上一次的生成的表,然后根據你的model類再重新來生成新表
  • create-drop:每次加載hibernate時根據model類生成表,但是sessionfactory一關閉,表就自動刪除
  • update:最常用的屬性,第一次加載hibernate時根據model類會自動建立起表的結構(前提是先建立好數據庫),以后加載hibernate時根據model類自動更新表結構
  • validate:每次加載hibernate時,驗證創建數據庫表結構,只會和數據庫中的表進行比較,不會創建新表,但是會插入新值

創建實體

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@entity
public class demoentity {
 @id
 @generatedvalue
 private long id;
 private string title;
 private string content;
 public demoentity() {
 }
 public demoentity(string title, string content) {
 this.title = title;
 this.content = content;
 }
 // get set 略
}

創建dao

?
1
2
3
4
5
6
7
public interface demorepository extends jparepository<demoentity, long> {
 demoentity findbytitle(string title);
 demoentity findbytitleandcontent(string title, string content);
// @query("select u from demoentity u where u.content=:content")
 @query("from demoentity u where u.content=:content")
 demoentity sqlfind(@param("content") string content);
}

sql中不要寫表名,要寫實體名,他會自動轉化為表名的。

通過解析方法名創建查詢

上面 findbytitle(string title) 與 findbytitleandcontent(string title, string content) ,沒有寫sql,但框架會自動按名字對上面的方對創建sql。

單元測試

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@runwith(springjunit4classrunner.class)
@springapplicationconfiguration(main.class)
public class unittest {
 @autowired
 demorepository demorepository;
 @test
 public void test()
 {
 for(int i=0;i<10;i++)
 {
 demorepository.save(new demoentity("title"+i, "content"+i));
 }
 assert.assertequals(10, demorepository.findall().size());
 }
 @test
 public void testfindbytitle()
 {
 demoentity res = demorepository.findbytitle("title8");
 assert.assertequals("title8", res.gettitle());
 }
 @test
 public void testfindbytitleandcontent()
 {
 demoentity res = demorepository.findbytitleandcontent("title9", "content9");
 assert.assertequals("title9", res.gettitle());
 assert.assertequals("content9", res.getcontent());
 }
 @test
 public void testsqlfind()
 {
 demoentity res = demorepository.sqlfind("content7");
 assert.assertequals("content7", res.getcontent());
 }
}

總結

以上所述是小編給大家介紹的spring boot中使用spring-data-jpa方便快捷的訪問數據庫,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:https://blog.fengcl.com/2018/05/03/spring-data-jpa/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产高清视频在线观看 | 综合久久综合 | 成人在线观看网 | 在线国产视频 | 亚洲国产精品一区二区三区 | 日韩福利电影 | 精品在线视频播放 | 久久久99精品免费观看 | 中文字幕最新在线 | 国产精品成人国产乱一区 | 久久久高清 | 精品久久在线 | 成人日韩 | 欧美日本韩国一区二区三区 | 北条麻妃一区二区三区在线观看 | 亚洲精品久久久久久国产 | 国产一级黄色大片 | 成人免费视频在线观看 | 欧美日韩一区二区三区在线观看 | 特黄色一级片 | 精品人成 | 久久亚 | 欧美日韩成人精品 | 亚色在线 | 亚洲综合婷婷 | 欧美日韩中文在线观看 | 在线播放一区二区三区 | 久久国产精品一区二区三区 | 青春草国产免费福利视频一区 | 亚洲lesbianxxxxhd| 国产91麻豆视频 | 国产高清一区二区三区 | 国久久久| www日韩| 国产精品美女久久久久久免费 | 欧美日韩国产一区二区三区 | 国产黄色电影 | 天堂va蜜桃一区二区三区漫画版 | 日韩在线小视频 | 女男羞羞视频网站免费 | 亚洲精品福利 |