H2 Database入门
时间:2022-04-23
本文章向大家介绍H2 Database入门,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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支持)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- android采用FFmpeg实现音视频合成与分离
- 如何在Node.js和Express中上传文件
- Android底部导航栏的动态替换方案
- Android自定义View实现饼状图带动画效果
- Android音视频之视频采集(系统API预览)
- 在Node.js中使用Multer进行文件上传
- Android实现自动填充短信验证码功能
- django项目中新增app的2种实现方法
- 如何使用Node.js编辑XML文件
- Windows下安装yarn的三种方法
- python topk()函数求最大和最小值实例
- 详解Ubuntu环境下部署Django+uwsgi+nginx总结
- 如何从Node.js中的命令行读取输入
- pyqt5中动画的使用详解
- PyQt使用QPropertyAnimation开发简单动画