在 Java 项目中,可以将 MyBatis 与 H2 数据库进行集成,以下是具体步骤:
在 Maven 项目的 pom.xml 配置文件中添加 MyBatis 和 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_h2</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>2.3.232</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>17</source> <target>17</target> </configuration> </plugin> </plugins> </build> </project>
创建 person 表对应的 Person 实体类,例如:
package com.hxstrive.h2.mybatis;
/**
* @author hxstrive.com
* @since 1.0.0 2024/9/24 14:14
*/
public class Person {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer 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 + '\'' +
'}';
}
}在 resources 目录下创建mybatis-config.xml配置文件,如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" 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=""/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/PersonMapper.xml"/> </mappers> </configuration>
创建一个 Mapper 接口,定义行为,如下:
package com.hxstrive.h2.mybatis;
import java.util.List;
/**
* @author hxstrive.com
* @since 1.0.0 2024/9/24 14:14
*/
public interface PersonMapper {
// 获取所有用户信息
List<Person> getAll();
// 根据ID获取用户信息
Person getById(Integer id);
// 插入用户信息
void insert(Person user);
// 更新用户信息
void update(Person user);
// 删除用户信息
void delete(Integer id);
}在 resources 目录下的 mapper 目录中创建一个 PersonMapper.xml 文件,例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hxstrive.h2.mybatis.PersonMapper">
<select id="getAll" resultType="com.hxstrive.h2.mybatis.Person">
SELECT * FROM person;
</select>
<select id="getById" parameterType="int" resultType="com.hxstrive.h2.mybatis.Person">
SELECT * FROM person WHERE id = #{id};
</select>
<insert id="insert" parameterType="com.hxstrive.h2.mybatis.Person">
INSERT INTO person (id, name) VALUES (#{id}, #{name});
</insert>
<update id="update" parameterType="com.hxstrive.h2.mybatis.Person">
UPDATE person SET name = #{name} WHERE id = #{id};
</update>
<delete id="delete" parameterType="int">
DELETE FROM person WHERE id = #{id};
</delete>
</mapper>创建一个测试类或在服务类中注入数据访问接口来测试与 H2 数据库的交互。例如:
package com.hxstrive.h2.mybatis;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
/**
* @author hxstrive.com
* @since 1.0.0 2024/9/24 14:16
*/
public class MyBatisH2Example {
public static void main(String[] args) {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
// 创建表
sqlSession.getConnection().createStatement()
.execute("CREATE TABLE PERSON(id int primary key, name varchar(255))");
PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
// 插入数据
Person person = new Person();
person.setId(1000);
person.setName("Alice");
personMapper.insert(person);
// 查询所有用户
for (Person p : personMapper.getAll()) {
System.out.println(p);
// 更新
p.setName("Alice-update");
personMapper.update(p);
// 查询单个用户信息
Person newP = personMapper.getById(p.getId());
System.out.println(newP);
// 删除
personMapper.delete(p.getId());
}
sqlSession.commit();
sqlSession.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}运行上面示例,输出如下:
Person{id=1000, name='Alice'}
Person{id=1000, name='Alice-update'}