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