以下是在项目中集成 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=李四) 删除用户信息...