亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

springboot整合H2內存數據庫實現單元測試與數據庫無關性

2024-07-13 10:16:39
字體:
來源:轉載
供稿:網友

一、新建spring boot工程

新建工程的時候,需要加入JPA,H2依賴

springboot,H2,內存,數據庫,單元測試

二、工程結構

springboot,H2,內存,數據庫,單元測試

pom文件依賴如下:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>   <groupId>com.chhliu.springboot.h2</groupId>  <artifactId>springboot-h2</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>   <name>springboot-h2</name>  <description>Demo project for Spring Boot H2</description>   <parent>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-parent</artifactId>   <version>1.4.3.RELEASE</version>   <relativePath/> <!-- lookup parent from repository -->  </parent>   <properties>   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>   <java.version>1.7</java.version>  </properties>   <dependencies>   <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-data-jpa</artifactId>   </dependency>   <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId>   </dependency>    <dependency>    <groupId>com.h2database</groupId>    <artifactId>h2</artifactId>    <scope>runtime</scope>   </dependency>   <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-test</artifactId>    <scope>test</scope>   </dependency>  </dependencies>   <build>   <plugins>    <plugin>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-maven-plugin</artifactId>    </plugin>   </plugins>  </build> </project> 

三、編寫實體類

package com.chhliu.springboot.h2.entity; import java.math.BigDecimal; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id;  @Entity public class User {  @Id  @GeneratedValue(strategy = GenerationType.AUTO)  private Long id;   @Column  private String username;   @Column  private String name;   @Column  private Short age;   @Column  private BigDecimal balance;   ……省略gettter和setter方法 } 

四、編寫dao

package com.chhliu.springboot.h2.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.chhliu.springboot.h2.entity.User; @Repository public interface UserRepository extends JpaRepository<User, Long> {  } 

五、編寫controller

package com.chhliu.springboot.h2.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController;  import com.chhliu.springboot.h2.entity.User; import com.chhliu.springboot.h2.repository.UserRepository;  @RestController public class UserController {   @Autowired  private UserRepository userRepository;   @GetMapping("/user/{id}")// 注意,此處使用的是GetMapping注解,該注解的作用類似與@RequestMapping(value="/user/{id}" ,method=RequestMethod.GET),@PostMapping注解同理  public User findById(@PathVariable Long id) {  return this.userRepository.findOne(id);  } } 

六、配置文件

# 服務器端口號 server.port=7900 # 是否生成ddl語句 spring.jpa.generate-ddl=false # 是否打印sql語句 spring.jpa.show-sql=true # 自動生成ddl,由于指定了具體的ddl,此處設置為none spring.jpa.hibernate.ddl-auto=none # 使用H2數據庫 spring.datasource.platform=h2 # 指定生成數據庫的schema文件位置 spring.datasource.schema=classpath:schema.sql # 指定插入數據庫語句的腳本位置 spring.datasource.data=classpath:data.sql # 配置日志打印信息 logging.level.root=INFO logging.level.org.hibernate=INFO logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE logging.level.org.hibernate.type.descriptor.sql.BasicExtractor=TRACE logging.level.com.itmuch=DEBUG 

七、啟動程序

在瀏覽器中輸入如下URL:http://localhost:7900/user/4 

可以看到測試結果

{"id":4,"username":"user4","name":"馬六","age":20,"balance":100.00} 

說明,我們的整合是OK的

八、測試dao層

package com.chhliu.springboot.h2; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import com.chhliu.springboot.h2.entity.User; import com.chhliu.springboot.h2.repository.UserRepository; @RunWith(SpringRunner.class) @SpringBootTest public class SpringbootH2ApplicationTests {   @Autowired  private UserRepository repository;    @Test  public void test(){   User u = repository.findOne(1L);   Assert.assertEquals("成功的測試用例", "張三", u.getName());  } } 

發現測試是ok的!

九、總結

由于H2是關系內存數據庫,當程序啟動的時候,會在內存中創建表,并將數據存儲在內存中,當重啟程序后,會自動刪除內存中的數據,從而可以很好的用來做dao層的單元測試和service層的單元測試,使整個程序不會依賴具體的數據庫,同時也提高了單元測試的效率。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区二区大胆人体摄影专业网站| 色哟哟入口国产精品| 91在线直播亚洲| 国产91精品久久久久| 国产欧美中文字幕| 亚洲国产天堂久久国产91| 久久99久久亚洲国产| 日韩成人激情影院| 久久久久久网站| 日韩h在线观看| 日韩av网址在线| 亚洲r级在线观看| 国产精品亚洲激情| 日韩精品在线观看一区| 91久久国产综合久久91精品网站| 欧美国产精品日韩| 福利视频一区二区| 亚洲色图欧美制服丝袜另类第一页| 亚洲在线一区二区| 国产精品色婷婷视频| 日韩欧美中文字幕在线观看| 久久久人成影片一区二区三区| 国产精品视频xxxx| 精品人伦一区二区三区蜜桃网站| 一本大道久久加勒比香蕉| 亚洲欧美日韩精品久久亚洲区| 色婷婷成人综合| 国产日韩精品电影| 久久99久久久久久久噜噜| 国产精品天天狠天天看| 成人a级免费视频| 成人黄色在线播放| 精品国内自产拍在线观看| 美女啪啪无遮挡免费久久网站| 91免费看片网站| 中日韩美女免费视频网站在线观看| 亚洲free性xxxx护士白浆| 欧美精品videosex牲欧美| 成人羞羞国产免费| 久久九九国产精品怡红院| 日本精品va在线观看| 伊人青青综合网站| 亚洲欧美激情精品一区二区| 久久精品国产69国产精品亚洲| 久久久极品av| 日韩中文理论片| 在线成人激情视频| 久久99久久亚洲国产| 中文字幕亚洲天堂| 中文字幕日韩在线视频| 91国在线精品国内播放| 亚洲国产美女久久久久| 性欧美xxxx| 欧美又大又硬又粗bbbbb| 国产91精品高潮白浆喷水| 国产精品一区二区三区在线播放| 大量国产精品视频| 国产日韩欧美另类| 粉嫩av一区二区三区免费野| 一区二区三区回区在观看免费视频| 一本色道久久综合狠狠躁篇怎么玩| 欧美xxxx14xxxxx性爽| 欧美www视频在线观看| 欧美激情一区二区三区高清视频| 欧美视频在线免费| 亚洲r级在线观看| 亚洲最大福利网| 中文字幕日本欧美| www国产精品com| 91久久久久久久久久久久久| 亚洲欧美在线x视频| 国产日产久久高清欧美一区| 亚洲国产精品小视频| 久久精品亚洲国产| 欧美日韩美女视频| 亚洲国产精品yw在线观看| 国产日韩欧美在线视频观看| 日韩av片免费在线观看| 中文在线不卡视频| 羞羞色国产精品| 精品视频9999| 中文字幕亚洲无线码在线一区| 久久精品影视伊人网| 亲子乱一区二区三区电影| 亚洲国产另类久久精品| 久久国产精品久久久久久| 九九热这里只有精品免费看| 一区二区欧美在线| 中文欧美日本在线资源| 欧美成人合集magnet| 欧美午夜无遮挡| 日韩精品视频在线观看网址| 不卡在线观看电视剧完整版| 国产精品第2页| 久久99久久99精品免观看粉嫩| 国产成人+综合亚洲+天堂| 国产玖玖精品视频| 欧美最顶级的aⅴ艳星| 久久久在线视频| 日韩中文字幕在线视频| www.欧美三级电影.com| 亚洲图片在区色| 国外成人免费在线播放| 国产91网红主播在线观看| 亚洲一区二区自拍| 一区二区在线视频| 久久夜色精品亚洲噜噜国产mv| 久久久精品网站| 国产精品www网站| 91美女片黄在线观| 神马久久桃色视频| 日韩av综合网站| 亚洲视频在线免费观看| 欧美午夜精品久久久久久人妖| 国产精品扒开腿做爽爽爽男男| 日韩av综合中文字幕| 超薄丝袜一区二区| 国产91色在线|免| 欧美大码xxxx| 国产成人欧美在线观看| 日本精品免费一区二区三区| 亚洲综合中文字幕在线观看| 成人福利视频在线观看| 国产最新精品视频| 亚洲欧洲日产国产网站| 日本乱人伦a精品| 国产精品igao视频| 日韩av网址在线| 国产精品久久久久久网站| 欧美精品激情视频| 午夜精品福利在线观看| 国产亚洲精品久久久| 亚洲男人的天堂网站| 欧美极品少妇xxxxⅹ喷水| 欧美大尺度激情区在线播放| 久久av中文字幕| 日韩av在线一区二区| 亚洲欧美日韩久久久久久| 国产精品高潮在线| 91精品国产91久久久久久不卡| 欧美放荡办公室videos4k| 中文亚洲视频在线| 亚洲精品自拍视频| 国模精品系列视频| 亚洲老司机av| 欧美电影免费观看高清| 国产精品久久婷婷六月丁香| 欧美黄色三级网站| 亚洲精品国产品国语在线| 成人免费视频97| 久久久av网站| 欧美国产精品日韩| 黄色一区二区三区| 久久天天躁夜夜躁狠狠躁2022| 亚洲成人a**站| 国产精品ⅴa在线观看h| 久久精品久久久久| 亚洲美女视频网| 日本一区二区在线免费播放| 成人免费福利在线| 精品偷拍各种wc美女嘘嘘| 国产精品免费久久久| 久久久精品视频在线观看| 91国语精品自产拍在线观看性色|