H2 Database做為輕量級的內嵌數據庫,功能十分強大,而且運行時只需要一個jar包即可,下表是官網的描述:

更詳細的對比見官網頁面: http://www.h2database.com/html/features.html#comparison
下面是開發入門步驟:
一、maven中添加依賴項
1 <dependency> 2 <groupId>com.h2database</groupId> 3 <artifactId>h2</artifactId> 4 <version>1.3.176</version> 5 </dependency>
二、Spring配置文件
a) 數據源配置
1 <bean id="dataSource" class="org.h2.jdbcx.JdbcConnectionPool" 2 destroy-method="dispose"> 3 <constructor-arg> 4 <bean class="org.h2.jdbcx.JdbcDataSource"> 5 <!-- 內存模式 --> 6 <property name="URL" value="jdbc:h2:mem:test" /> 7 <!-- 文件模式 --> 8 <!-- <property name="URL" value="jdbc:h2:testRestDB" /> --> 9 <property name="user" value="sa" /> 10 <property name="password" value="sa" /> 11 </bean> 12 </constructor-arg> 13 </bean>
注:密碼不要留空(可以根據需要修改成其它值),否則運行時會報" 用戶名、密碼錯之類"的Error
b) 初始化數據庫腳本
1 <!-- 初始化數據表結構 --> 2 <jdbc:initialize-database data-source="dataSource" 3 ignore-failures="ALL"> 4 <jdbc:script location="classpath:database/h2/create-table.sql" /> 5 <jdbc:script location="classpath:database/h2/import-data.sql" /> 6 </jdbc:initialize-database>
配置這個以后,每次應用啟動前,會先執行create-table.sql,然后再執行import-data.sql,十分方便測試前,先初始化db環境
c) hibernate支持
1 <bean id="sessionFactory" 2 class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 3 <property name="dataSource" ref="dataSource" /> 4 <property name="packagesToScan"> 5 <list> 6 <value>com.cnblogs.yjmyzz.entity</value> 7 </list> 8 </property> 9 <property name="mappingLocations"> 10 <list> 11 <value>classpath*:hibernate/**/*.hbm.xml</value> 12 </list> 13 </property> 14 <property name="hibernateProperties"> 15 <props> 16 <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop> 17 <!-- <prop key="current_session_context_class">thread</prop> --> 18 <prop key="hibernate.format_sql">true</prop> 19 <prop key="hibernate.show_sql">true</prop> 20 <prop key="hibernate.use_sql_comments">true</prop> 21 <prop key="hibernate.max_fetch_depth">3</prop> 22 <prop key="hibernate.jdbc.batch_size">20</prop> 23 <prop key="hibernate.jdbc.fetch_size">20</prop> 24 <prop key="hibernate.cache.use_second_level_cache">false</prop> 25 </props> 26 </property> 27 </bean>
關鍵是16行,數據庫方言的設置
d)mybatis分頁插件設置
1 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 2 <property name="dataSource" ref="dataSource" /> 3 <property name="configLocation" value="classpath:mybatis-config.xml"></property> 4 <property name="typeAliasesPackage" value="com.cnblogs.yjmyzz.entity"></property> 5 <property name="mapperLocations" value="classpath:mybatis/**/*.xml"></property> 6 <property name="plugins"> 7 <list> 8 <bean 9 class="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor"> 10 <property name="dialectClass" 11 value="com.github.miemiedev.mybatis.paginator.dialect.H2Dialect"></property> 12 </bean> 13 </list> 14 </property> 15 </bean>
關鍵是11行,方言的設置
三、代碼測試:
1 @Test 2 public void testConnH2() throws SQLException, IOException { 3 ApplicationContext ctx = new ClassPathXmlApplicationContext( 4 "spring-datasource.xml"); 5 OrderMapper orderMapper = ctx.getBean(OrderMapper.class); 6 List<TOrder> orders = orderMapper.getAllOrder(); 7 for (TOrder o : orders) { 8 System.out.println(o.getClientname()); 9 } 10 ((ClassPathXmlApplicationContext) ctx).close(); 11 12 }
上面演示了mybatis結合H2的使用示例
四、控制台界面
H2還提供了一個可視化界面

Windows開始菜單->H2->H2 console,點擊connect連接就行了

有不熟悉的函數啥的,直接在SQL輸入區,輸入 help,然后run,下面就有幫助信息
完整的示例代碼下載 (基於struts2的rest-plugin showcase,增加了mybatis3 + hibernate4 + spring4 + velocity支持)
