在 Spring 项目中集成 H2 数据库可以按照以下步骤进行:
在项目的 pom.xml 中添加 H2 数据库和 Spring 依赖:
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>2.1.214</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>5.3.31</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.31</version> </dependency>
该示例将使用 JdbcTemplate,因此引入了 spring-jdbc 依赖。
在 Spring 的配置文件(如 spring-context.xml)中配置 H2 数据库的连接信息,以及 JdbcTemplate 配置信息,如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="org.h2.Driver"/> <property name="url" value="jdbc:h2:mem:test-db;DB_CLOSE_DELAY=-1"/> <property name="username" value="sa"/> <property name="password" value=""/> </bean> <!-- 配置 JdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean> </beans>
注意,这里使用内存数据库模式,连接名为 test-db,用户名默认是sa且无密码。
下面将通过手动加载类路径下的 Spring XML 配置文件来初始化 Spring,然后通过 ApplicationContext 获取 JdbcTemplate 的实例,通过 JdbcTemplate 示例操作 H2 数据库。例如:
package com.hxstrive.h2.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Map; /** * @author hxstrive.com * @since 1.0.0 2024/9/24 13:39 */ public class SpringDemo { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml"); JdbcTemplate jdbcTemplate = context.getBean(JdbcTemplate.class); // 创建表 jdbcTemplate.execute("CREATE TABLE PERSON(id int primary key, name varchar(255))"); // 插入数据 jdbcTemplate.execute("INSERT INTO PERSON(id, name) VALUES (10001, '张三')"); jdbcTemplate.execute("INSERT INTO PERSON(id, name) VALUES (10002, '李四')"); // 查询数据 List<Person> personList = jdbcTemplate.query("SELECT id,name FROM PERSON", new RowMapper<Person>() { @Override public Person mapRow(ResultSet rs, int rowNum) throws SQLException { Person person = new Person(); person.setId(rs.getInt("id")); person.setName(rs.getString("name")); return person; } }); for(Person person : personList) { System.out.println(person); } // 删除数据 jdbcTemplate.execute("DELETE FROM PERSON"); } static class Person { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + '}'; } } }
执行上述示例,输出如下:
Person{id=10001, name='张三'} Person{id=10002, name='李四'}