大家可以參考下這個網站http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?p=28685
2.SSH2框架和h2數據庫整合方法
2.1先在數據庫下創建 schema目錄(相當于一個數據庫實例)
create schema fdrkftcode
目的是解決這種異常org.h2.jdbc.JdbcSQLException: Schema "fdrkftcode" not found; ...
create table fdrkftcode.admin(
id int primary key,
adminname varchar(50),
username varchar(50),
userpwd varchar(50),
adminrights varchar(50),
createdate datetime,
usedtimes int,
lastlogin datetime,
curstatus int,
remark varchar(200)
)
3.為了使用hibernate操作h2,需要作如下設置,在sql編輯窗口輸入下面這些腳本
對于實體pojo對象的映射,我是用的annotation,關鍵是id主鍵的映射,如下:
@Column(name = "ID", nullable = false)
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ABC_ID_SEQ")
@SequenceGenerator(name = "ABC_ID_SEQ", sequenceName = "ABC_ID_SEQ")
protected Long id;
注意這里的GeneratedValue和SequenceGenerator的使用,這屬于JPA規范,全部來自javax.persisten
4.配置applicationContext.xml文件,主要有三個地方要注意:
4.1修改連接數據庫的JDBC驅動 driverClass的值為org.h2.Driver
4.2修改連接數據庫所用的URL字符串 jdbcUrl的值為jdbc:h2:tcp://localhost/~/FDRKFTCODE;MODE=MySQL;AUTO_SERVER=TRUE
4.3修改Hibernate的數據庫方言hibernate.dialect為org.hibernate.dialect.H2Dialect
5.h2數據庫一些常用操作
5.1幫助命令help
5.2表中某字段重命名 ALTER TABLE fdrkftcode.admin ALTER COLUMN usepwd rename to userpwd
5.3表中新增字段 ALTER TABLE fdrkftcode.admin ADD IF NOT EXISTS abc varchar(50)
5.4表中刪除字段 ALTER TABLE fdrkftcode.admin DROP COLUMN IF EXISTS abc
5.5查找表中記錄 SELECT * from fdrkftcode.admin
5.6往表中插入記錄 INSERT INTO fdrkftcode.admin VALUES (1,'管理員','admin','admin','10000000000000000000','2013-05-1 00:12:34',3,'2013-05-1 15:32:57',1,'超過級管理員')
5.7修改表中某記錄 UPDATE fdrkftcode.admin SET fdrkftcode.admin.adminname='超級管理員' where fdrkftcode.admin.id=1
5.8刪除表中某記錄 DELETE FROM fdrkftcode.admin WHERE fdrkftcode.admin.id=1
6.下面是我項目的applicationContext.xml配置方法,大家可以參考下
<?xml version="1.0" encoding="UTF-8"?><beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 定義使用C3P0連接池的數據源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 指定連接數據庫的JDBC驅動 -->
<property name="driverClass">
<value>org.h2.Driver</value>
</property>
<!-- 連接數據庫所用的URL -->
<property name="jdbcUrl">
<value>jdbc:h2:tcp://localhost/~/FDRKFTCODE;MODE=MySQL;AUTO_SERVER=TRUE</value>
</property>
<!-- 連接數據庫的用戶名 -->
<property name="user">
<value>sa</value>
</property>
<!-- 連接數據庫的密碼 -->
<property name="password">
<value></value>
</property>
<!-- 設置數據庫連接池的最大連接數 -->
<property name="maxPoolSize">
<value>50</value>
</property>
<!-- 設置數據庫連接池的最小連接數 -->
<property name="minPoolSize">
<value>5</value>
</property>
<!-- 設置數據庫連接池的初始化連接數 -->
<property name="initialPoolSize">
<value>5</value>
</property>
<!-- 設置數據庫連接池的連接的最大空閑時間,單位為秒 -->
<property name="maxIdleTime">
<value>20</value>
</property>
</bean>
<!-- 定義Hibernate的SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 依賴注入上面定義的數據源dataSource -->
<property name="dataSource" ref="dataSource"/>
<!-- 注冊Hibernate的ORM映射文件 -->
<property name="mappingResources">
<list>
<value>com/sungoal/ORM/Admin.hbm.xml</value>
</list>
</property>
<!-- 設置Hibernate的相關屬性 -->
<property name="hibernateProperties">
<props>
<!-- 設置Hibernate的數據庫方言 -->
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
<!-- 設置Hibernate是否在控制臺輸出SQL語句,開發調試階段通常設為true -->
<prop key="show_sql">true</prop>
<!-- 設置Hibernate一個提交批次中的最大SQL語句數 -->
<prop key="hibernate.jdbc.batch_size">50</prop>
</props>
</property>
</bean>
<!--定義Hibernate的事務管理器HibernateTransactionManager -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!-- 依賴注入上面定義的sessionFactory -->
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 裝配通用數據庫訪問類BaseDAOImpl -->
<bean id="dao" class="com.sungoal.DAO.BaseDAOImpl">
<!-- 依賴注入上面定義的sessionFactory -->
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 部署系統用戶管理業務控制器AdminAction -->
<bean id="adminAction" class="com.sungoal.struts.action.AdminAction" scope="prototype">
<property name="dao" ref="dao"/>
</bean>
</beans>