H2是一个开源的嵌入式(非嵌入式设备)数据库引擎,它是一个用Java开发的类库,可直接嵌入到应用程序中,与应用程序一起打包发布,不受平台限制。
H2与Derby、HSQLDB、MySQL、PostgreSQL等开源数据库相比,H2的优势为:
* Java开发,不受平台限制;
* H2只有一个jar包,占用空间小,适合嵌入式数据库;
* 有web控制台,用于管管理数据库。
接下来介绍Spring+Mybatis+H2的数据库访问实践,参考:https://blog.csdn.net/xktxoo/article/details/78014739
添加H2数据库依赖:
```
com.h2database
h2
1.4.190
```
H2数据库属性文件配置如下,本文采用内存模式访问H2数据库:
```
driver=org.h2.Driver
# 内存模式
url=jdbc:h2:mem:testdb;MODE=MYSQL;DB_CLOSE_DELAY=-1
# 持久化模式
#url= jdbc:h2:tcp://localhost/~/test1;MODE=MYSQL;DB_CLOSE_DELAY=-1
```
H2数据库访问的Spring配置文件为:
```
classpath:config.properties
```
初始化数据库的DDL语句文件为:
```
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`)
);
```
初始化数据库的DML语句文件为:
```
insert into `user` (`id`,`name`,`age`) values (1, 'Jerry', 27);
insert into `user` (`id`,`name`,`age`) values (2, 'Angel', 25);
```
编写测试文件,如下:
```java
/**
* Created by Jerry on 17/7/30.
*/
@ContextConfiguration(locations = {"classpath:config.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class Test extends AbstractJUnit4SpringContextTests{
@Resource
UserDAO userDAO;
@org.junit.Test
public void testInsert() {
int result = userDAO.insert(new User(null, "LiLei", 27));
Assert.assertTrue(result > 0);
}
@org.junit.Test
public void testUpdate() {
int result = userDAO.update(new User(2L, "Jerry update", 28));
Assert.assertTrue(result > 0);
}
@org.junit.Test
public void testSelect() {
User result = userDAO.findByName(new User(null, "Jerry", null));
Assert.assertTrue(result.getAge() != null);
}
@org.junit.Test
public void testDelete() {
int result = userDAO.delete("Jerry");
Assert.assertTrue(result > 0);
}
}
```