轉載:https://blog.csdn.net/chenhao_c_h/article/details/80332260
h2database為我們提供了十分輕量,十分快捷方便的內嵌式數據庫
H2是一個用Java開發的嵌入式數據庫,它本身只是一個類庫,可以直接嵌入到應用項目中。
可以同應用程序打包在一起發布
它的另一個用途是用於單元測試。啟動速度快,而且可以關閉持久化功能,每一個用例執行完隨即還原到初始狀態
提供JDBC訪問接口,提供基於瀏覽器的控制台,可以執行sql
免費,開源,夠快
還方便了程序剛開始dao層單元測試測試,不需要搭建oracle,不需要加載mysql,快速測試寫的dao
h2database 官網地址:http://www.h2database.com/html/main.html
點擊下載,解壓即可。
解壓縮后的目錄結構:
h2
|---bin
| |---h2-1.1.116.jar //H2數據庫的jar包(驅動也在里面)
| |---h2.bat //Windows控制台啟動腳本
| |---h2.sh //Linux控制台啟動腳本
| |---h2w.bat //Windows控制台啟動腳本(不帶黑屏窗口)
|---docs //H2數據庫的幫助文檔(內有H2數據庫的使用手冊)
|---service //通過wrapper包裝成服務。
|---src //H2數據庫的源代碼
|---build.bat //windows構建腳本
|---build.sh //linux構建腳本
此時就算“安裝”完成了。
切換到h2解壓目錄。
➜ ~ cd Downloads/h2
➜ h2 nohup ./bin/h2_server.sh
appending output to nohup.out
彈出h2管理頁面,啟動成功。
瀏覽器訪問:http://localhost:8082/
二、后台代碼
創建SpringBoot工程,https://start.spring.io/
添加maven依賴:
<!--h2-->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.195</version>
</dependency>
配置application.yml
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:~/test
username: sa
password:
此處的url跟classname均可在頁面管理中找到。
此為嵌入式鏈接模式,只允許一個鏈接,如果想多個鏈接,比如測試代碼鏈接和頁面的h2控制台鏈接,請使用混合模式鏈接
將 JDBC URL 后加上 AUTO_SERVER=TRUE
同理 在yml文件中修改鏈接數據URL 后加上 AUTO_SERVER=TRUE
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:~/test;AUTO_SERVER=TRUE
username: sa
password:
添加 jpa 依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
修改yml,新增show-sql、ddl-auto設為update
jpa:
show-sql: true
hibernate:
ddl-auto: update
添加簡單實體類
@Entity
@Data
public class User {
@Id //主鍵
private Integer id;
private Integer age;
private String name;
private String address;
private String city;
}
添加UserRepository
public interface UserRepository extends JpaRepository<User,Integer> {
}
三、開始測試
添加測試類UserRepositoryTest
數據新增測試
@SpringBootTest
@RunWith(SpringRunner.class)
public class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
@Test
public void addUser() {
User user = new User();
user.setId(1);
user.setName("張三");
user.setAddress("北京");
user.setAge(19);
user.setCity("北京");
userRepository.save(user);
}
}
console->
查看h2控制台
數據添加成功,測試修改
@Test
public void editUser(){
User user = new User();
user.setId(1);
user.setName("李四");
user.setAddress("上海");
user.setAge(20);
user.setCity("上海");
userRepository.save(user);
}
查看h2控制台->
數據修改成功,測試查詢
@Test
public void queryUser(){
User user = userRepository.findOne(1);
System.out.println(user);
Assert.assertEquals("李四",user.getName());
Assert.assertEquals("上海",user.getAddress());
}
console->
數據查詢成功,測試刪除
@Test
public void delUser(){
userRepository.delete(1);
}
查看h2控制台
數據刪除測試成功。
代碼github:git@github.com:ChenHaoXFN/h2Demo.git
參考文獻: https://blog.csdn.net/fanpeizhong/article/details/73543260