springboot中使用h2数据库(内存模式)

Posted 理舞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot中使用h2数据库(内存模式)相关的知识,希望对你有一定的参考价值。

使用H2的优点,不需要装有服务端和客户端,在项目中包含一个jar即可,加上初始化的SQL就可以使用数据库了

在springboot中引入,我的版本是2.1.4,里面就包含有h2的版本控制

        <!-- 集成h2数据库 -->
        <dependency>
           <groupId>com.h2database</groupId>
           <artifactId>h2</artifactId>
           <scope>runtime</scope>
        </dependency>

在pom文件中,一般我都包含了下面一段

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
        
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.tld</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

截图:

h2数据库的配置:application-h2.properties

#spring.datasource.url = jdbc:h2:file:~/.h2/testdb
spring.datasource.url=jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password= 
spring.datasource.schema=classpath:db/schema.sql
spring.datasource.data=classpath:db/data.sql

如果数据文件有多个,使用逗号拼接就可以了,spring.datasource.data=classpath:db/data.sql,classpath:db/data2.sql

db/data.sql内容:

insert into mytest(name) values(\'TheoryDance\');

schema.sql内容:

create table mytest(id int primary key auto_increment, name varchar(20) not null);

在测试类中添加一个测试方法

package com.grand.mysql_handler;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.grand.mysql_handler.mapper.SystemMapper;

@SpringBootTest
@RunWith(SpringRunner.class)
public class MyRestTest2 {
    
    @Resource
    private SystemMapper systemMapper;
    
    @Test
    public void testH2() {
        List<Map<String,Object>> list = systemMapper.selectBySql("select * from mytest");
        System.out.println(list);
    }
    
}

其中SysMapper.java内容如下(使用的Mybatis连接数据库):

package com.grand.mysql_handler.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

@Mapper
public interface SystemMapper {

    @Insert("${sql}")
    int insertBySql(@Param("sql")String sql);
    @Delete("${sql}")
    int deleteBySql(@Param("sql")String sql);
    @Update("${sql}")
    int updateBySql(@Param("sql")String sql);
    @Select("${sql}")
    List<Map<String,Object>> selectBySql(@Param("sql")String sql);
    @Select("${sql}")
    Map<String,Object> selectOneBySql(@Param("sql")String sql);

}

 测试结果:

以上是关于springboot中使用h2数据库(内存模式)的主要内容,如果未能解决你的问题,请参考以下文章

idea 中 springBoot 集成 h2 轻量级内存数据库

在内存数据库中使用 H2 进行 Spring Boot 集成测试

如何在 Spring Boot 中启用 H2 数据库服务器模式

播放框架2:内存数据库中的h2 mysql兼容模式:转义字符

Spring Boot 2.x 之 H2 数据库

在同一应用程序中使用内存中的 H2 和 H2 文件