H2 与 MyBatis Plus 集成

以下是在项目中集成 MyBatis Plus 和 H2 数据库的步骤。

注意,项目采用 Spring Boot 进行开发。

添加 Maven 依赖

在 Maven 项目的  pom.xml 文件中添加 MyBatis Plus 和 H2 数据库的依赖,例如:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.hxstrive</groupId>
    <artifactId>demo_springboot</artifactId>
    <version>0.0.1</version>
    <packaging>jar</packaging>
    <name>demo_springboot</name>
    <description>Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <!--<version>2.0.1.RELEASE</version>-->
        <version>2.6.15</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>2.3.232</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.4.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.6.15</version>
            </plugin>
        </plugins>
    </build>

</project>

配置数据源

在项目的配置文件 application.yml 中配置 H2 数据库的连接信息:

spring:
  # 数据源配置
  datasource:
    url: jdbc:h2:mem:test-db;DB_CLOSE_DELAY=-1
    username: sa
    password:
    driver-class-name: org.h2.Driver

注意:这里使用内存数据库模式,连接名为test-db,用户名默认是sa且无密码。

创建实体类

创建一个用户实体类 PersonEntity,如下:

package com.hxstrive.springboot.h2.mybatis_plus;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;

/**
 * @author hxstrive.com
 * @since 1.0.0  2024/9/24 13:56
 */
@Builder
@Data
@TableName("person")
@ToString
public class PersonEntity {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @TableField("name")
    private String name;

}

注意:上述的 @Builder、@Data 和 @ToString 注解是 lombok 工具包中的注解,方便编写实体。

创建数据访问接口

继承 MyBatis Plus 的BaseMapper接口创建 person 访问层接口,如下:

package com.hxstrive.springboot.h2.mybatis_plus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hxstrive.springboot.h2.mybatis_plus.PersonEntity;

/**
 * @author hxstrive.com
 * @since 1.0.0  2024/9/24 14:49
 */
public interface PersonMapper extends BaseMapper<PersonEntity> {

}

注意,BaseMapper 是 MyBatis-Plus 中一个非常重要的接口,它提供了一系列强大的数据库操作方法,极大地简化了开发过程。

创建测试类

下面创建一个 Spring Boot 的测试类,通过该测试类来验证集成是否成功。例如:

package com.hxstrive.springboot.h2.mybatis_plus;

import com.hxstrive.springboot.h2.mybatis_plus.mapper.PersonMapper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import javax.sql.DataSource;
import java.sql.Statement;

/**
 * @author hxstrive.com
 * @since 1.0.0  2024/9/24 14:51
 */
@SpringBootTest
public class MyBatisPlusH2Test {
    @Autowired
    private DataSource dataSource;

    @Autowired
    private PersonMapper personMapper;

    @BeforeEach
    public void init() {
        try {
            // 创建数据表
            System.out.println("init H2 database...");
            Statement statement = dataSource.getConnection().createStatement();
            statement.execute("CREATE TABLE PERSON(id int primary key, name varchar(255))");
            statement.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void context() {
        // 插入一条数据
        System.out.println("插入一条数据...");
        personMapper.insert(PersonEntity.builder().id(1000L).name("张三").build());

        // 查询数据
        System.out.println("查询数据...");
        personMapper.selectList(null).forEach(p -> {
            System.out.println(p);

            // 修改用户信息
            System.out.println("修改用户信息...");
            p.setName("李四");
            personMapper.updateById(p);

            // 根据ID查询用户信息
            PersonEntity newP = personMapper.selectById(p.getId());
            System.out.println(newP);

            // 删除用户信息
            System.out.println("删除用户信息...");
            personMapper.deleteById(newP.getId());
        });
    }

}

运行示例,输出如下:

init H2 database...
插入一条数据...
查询数据...
PersonEntity(id=1000, name=张三)
修改用户信息...
PersonEntity(id=1000, name=李四)
删除用户信息...


说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号