H2 数据库 和 DbUnit单元测试框架

/**
H2嵌入式数据库有三种使用方式:内存模式、嵌入模式、服务器模式

连接方式:
#数据库URL 内存模式
#spring.datasource.url=jdbc:h2:mem:hello

#数据库URL嵌入模式  连接语法:jdbc:h2:[file:][<path>]<databaseName>
#spring.datasource.url=jdbc:h2:file:D:/D/test

#数据库URL服务模式 jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName>
spring.datasource.url=jdbc:h2:tcp://localhost//F:/H2/hello

支持PostgreSQL兼容模式,支持初始化
If you are using spring with application.yml the following will work for you
spring:
  datasource:
    url: jdbc:h2:mem:mydb;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL;INIT=CREATE SCHEMA IF NOT EXISTS calendar

 */

   public static void main(String[] args)throws Exception {
       Class.forName("org.h2.Driver");
       Connection dbConn = DriverManager.getConnection("jdbc:h2:file:./test");
       Statement s = dbConn.createStatement();
//   s.execute("CREATE SCHEMA  IF NOT EXISTS TEST;SET SCHEMA TEST;");
       s.execute("create table IF NOT EXISTS user(id int,username varchar(20),password varchar(20),name varchar(20))");
       s.execute("insert into user VALUES (1,'gaofeng','pass','name')");
       s.execute("insert into user VALUES (2,'gaofeng','pass','name')");
       ResultSet r = s.executeQuery("select * from user");
       int row = 0;
       while(r.next()) {
           System.out.println(row+" : "+r.getInt(1) + ", "+ r.getString(2)); 
           row++;
       }
       r.close();
       s.close();
       dbConn.close();
   }
dbunit,可以把多张表的数据备份到xml中,也可以把xml中的数据导入到数据库中。便于单元测试。
    <dependency>
        <groupId>org.dbunit</groupId>
        <artifactId>dbunit</artifactId>
        <version>2.7.0</version>
    </dependency>
import org.dbunit.database.QueryDataSet;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
import org.dbunit.ext.h2.H2Connection;

       IDatabaseConnection conn = new H2Connection(dbConn,null);;
       
       QueryDataSet queryDataSet=new QueryDataSet(conn);
       queryDataSet.addTable("user"); //设定要备份的表
       
       FlatXmlDataSet.write(queryDataSet, new FileOutputStream("backup.xml"));
       

       IDataSet dataSet=new FlatXmlDataSetBuilder().build(new File("data.xml"));
       DatabaseOperation.CLEAN_INSERT.execute(conn, dataSet); //导入数据
             
       /*以下是正常的sql查询代码*/
       ResultSet r = s.executeQuery("select * from user");
       int row = 0;
       while(r.next()) {
           System.out.println(row+" : "+r.getInt(1) + ", "+ r.getString(2)); 
           row++;
       }
backup.xml
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
  <user ID="1" USERNAME="test-user1" PASSWORD="test-user1" NAME="test-user1"/>
  <user ID="2" USERNAME="test-user2" PASSWORD="test-user2" NAME="test-user2"/>
  <user ID="1" USERNAME="gaofeng" PASSWORD="pass" NAME="name"/>
  <user ID="2" USERNAME="gaofeng" PASSWORD="pass" NAME="name"/>
</dataset>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值