国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

springboot整合H2內(nèi)存數(shù)據(jù)庫實現(xiàn)單元測試與數(shù)據(jù)庫無關(guān)性

2024-07-13 10:16:39
字體:
供稿:網(wǎng)友

一、新建spring boot工程

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

springboot,H2,內(nèi)存,數(shù)據(jù)庫,單元測試

二、工程結(jié)構(gòu)

springboot,H2,內(nèi)存,數(shù)據(jù)庫,單元測試

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);  } } 

六、配置文件

# 服務(wù)器端口號 server.port=7900 # 是否生成ddl語句 spring.jpa.generate-ddl=false # 是否打印sql語句 spring.jpa.show-sql=true # 自動生成ddl,由于指定了具體的ddl,此處設(shè)置為none spring.jpa.hibernate.ddl-auto=none # 使用H2數(shù)據(jù)庫 spring.datasource.platform=h2 # 指定生成數(shù)據(jù)庫的schema文件位置 spring.datasource.schema=classpath:schema.sql # 指定插入數(shù)據(jù)庫語句的腳本位置 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 

可以看到測試結(jié)果

{"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());  } } 

發(fā)現(xiàn)測試是ok的!

九、總結(jié)

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 西乌珠穆沁旗| 根河市| 清镇市| 集安市| 内乡县| 泰来县| 大悟县| 平潭县| 巴彦淖尔市| 绥阳县| 饶河县| 洛阳市| 余姚市| 岐山县| 丰镇市| 土默特左旗| 莱阳市| 昌江| 岳阳市| 元江| 蒙城县| 平南县| 滨海县| 宜兰市| 舒城县| 延吉市| 镇远县| 黑水县| 汉阴县| 平凉市| 仁怀市| 辽阳市| 吉林省| 云南省| 慈溪市| 团风县| 镇康县| 旬阳县| 遂宁市| 新邵县| 新津县|