以下是在项目中集成 MyBatis Plus 和 H2 数据库的步骤。
注意,项目采用 Spring Boot 进行开发。
在 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=李四) 删除用户信息...