h2database之單元測試內存模式 筆記


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');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM