h2是一个轻量级的数据库,添加一个jar包就能使用,和sqllite有点像,它的内存模式更是单元测试神器,他还支持模拟各种类型的数据库,功能很强大
1.使用准备
maven: <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.197</version> <scope>test</scope> </dependency>
在idea上还可以直接创建本地数据库,直接进行关于数据库的增删改查等操作,注意内存模式是不能直接用图形界面进行创建表结构等操作,要用执行sql语句的方式来进行操作
2.jdbc连通测试
连接h2和其他的数据库差别不大,注意的是h2的url,除了指定连接外,url还可以实现h2的许多特性功能,以下是jdbc链接h2例子
@Test @DisplayName("h2模拟sqlser内存模式链接测试") public void connectH2DatabaseWithJdbc() throws Exception { final String JDBC_URL = "jdbc:h2:mem:default;MODE=MSSQLServer;INIT=RUNSCRIPT FROM 'classpath:sql/createtable.sql'"; //连接数据库时使用的用户 final String USER = ""; //连接数据库时使用的密码 final String PASSWORD = ""; //连接H2数据库时使用的驱动类,org.h2.Driver这个类是由H2数据库自己提供的,在H2数据库的jar包中可以找到 final String DRIVER_CLASS = "org.h2.Driver"; // 加载H2数据库驱动 Class.forName(DRIVER_CLASS); // 根据连接URL,用户名,密码获取数据库连接 Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD); Statement stmt = conn.createStatement(); //查询 ResultSet rs = stmt.executeQuery("SELECT top 200 * FROM nametable"); //遍历结果集 while (rs.next()) { System.out.println(rs.getString("name") ); } //释放资源 stmt.close(); //关闭连接 conn.close(); }
在url中,第一部分是内存模式的h2连接,第二部分是模拟sql server ,它可以模拟大部分主流数据库,模拟之后就可以在查询时使用那些数据库特定的语法,最后的部分是执行sql脚本,由于内存模式的特性是即用即毁,所以必须要先插入数据才有效
sql脚本例子:
create table nametable ( name varchar(3) not null, primary key (name) ); insert into nametable values ('xiaoming'); insert into nametable values ('xiaohong');