java中MyBatis项目的搭建与配置
MyBatis 项目搭建与配置教程
一、环境准备
- JDK:Java 开发工具包,建议使用 JDK 8 或更高版本。可以从 Oracle 官网(Java Downloads | Oracle)或 OpenJDK 相关网站下载并按照安装向导进行安装。安装完成后,配置好系统的环境变量,使得在命令行中能够正确执行
java
和javac
命令。 - Maven:用于项目的依赖管理和构建,你可以从 Maven 官网(Welcome to Apache Maven – Maven)下载并安装。安装后同样配置好环境变量,确保在命令行中可以使用
mvn
命令。可以通过mvn -v
命令检查 Maven 是否安装成功并查看其版本信息。 - 数据库:例如 MySQL,你需要安装并启动 MySQL 服务,创建一个名为
test_db
的数据库用于项目测试。可以使用以下 SQL 语句创建数据库、表并插入测试数据:
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
);
INSERT INTO users (name, age) VALUES ('Alice', 25);
INSERT INTO users (name, age) VALUES ('Bob', 30);
二、项目命名建议
项目的命名应具有一定的描述性,能够清晰地表达项目的功能或用途。例如,我们可以将这个 MyBatis 示例项目命名为 mybatis-user-management-demo
,表示这是一个使用 MyBatis 进行用户管理的示例项目。当然,你也可以根据自己的喜好和实际需求进行命名。
三、使用 IntelliJ IDEA 创建项目的步骤
- 打开 IntelliJ IDEA,选择
File
->New
->Project
。 - 在左侧面板中选择
Maven
,确保勾选Create from archetype
,选择org.apache.maven.archetypes:maven-archetype-quickstart
。这个原型会创建一个基本的 Maven 项目结构,包含以下目录:src/main/java
:用于存放主代码。后续我们将在这个目录下创建实体类和 Mapper 接口。src/main/resources
:用于存放资源文件,如配置文件。我们会在此目录下创建 MyBatis 的配置文件mybatis-config.xml
和 Mapper XML 文件。src/test/java
:用于存放测试代码。我们将在这个目录下编写测试代码来验证 MyBatis 的功能。
- 填写
GroupId
(例如com.example
)、ArtifactId
(例如mybatis-user-management-demo
)和Version
(例如1.0-SNAPSHOT
)等信息。GroupId
通常是公司或组织的反向域名,用于唯一标识项目所属的组织;ArtifactId
是项目的名称;Version
是项目的版本号。然后点击Next
。 - 配置 Maven 的相关信息,如
Maven home directory
(Maven 的安装目录)等,确保 Maven 能够正确运行。点击Next
。 - 确认项目名称和存储路径,点击
Finish
。IntelliJ IDEA 会自动生成项目的基本结构,并下载相关的 Maven 依赖。
四、项目的 Maven 配置(pom.xml 文件)
在生成的项目中,pom.xml
文件用于管理项目的依赖和构建配置,内容如下:
<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.example</groupId>
<artifactId>mybatis-user-management-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>22</maven.compiler.source>
<maven.compiler.target>22</maven.compiler.target>
</properties>
<dependencies>
<!-- MyBatis 核心依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- MySQL 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
</project>
五、配置 MyBatis
- 在
src/main/resources
目录下创建mybatis-config.xml
文件,用于配置 MyBatis 的核心设置。示例配置如下:
<?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="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 这里可以添加 Mapper XML 文件的路径 -->
</mappers>
</configuration>
- 错误处理:
URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
错误- 错误原因:IDE(如 IntelliJ IDEA)无法找到并注册
mybatis-config.xml
文件中引用的 DTD 文件(http://mybatis.org/dtd/mybatis-3-config.dtd
),这可能是由于网络问题、IDE 配置问题或者 DTD 文件未被正确缓存导致的。 - 解决办法:
- 手动注册 DTD:打开 IDE 的设置(在 IntelliJ IDEA 中,选择
File
->Settings
->Languages & Frameworks
->Schemas and DTDs
)。点击+
按钮,在URI
输入框中粘贴http://mybatis.org/dtd/mybatis-3-config.dtd
,在File or directory
中选择本地保存的mybatis-3-config.dtd
文件(可以从 MyBatis 官方网站下载),或者让 IDE 自动下载(如果网络允许)。点击OK
保存设置。 - 忽略 DTD 验证:如果你不想手动注册 DTD 文件,也可以在 IDE 中配置忽略 DTD 验证。在 IntelliJ IDEA 中,选择
File
->Settings
->Editor
->Inspections
,搜索XML
相关的验证选项,取消勾选DTD validation
等相关选项。
- 手动注册 DTD:打开 IDE 的设置(在 IntelliJ IDEA 中,选择
- 错误原因:IDE(如 IntelliJ IDEA)无法找到并注册
Unescaped & or nonterminated character/entity reference
错误- 错误原因:在 XML 文件中,
&
是一个特殊字符,用于表示实体引用(如<
表示<
)。如果直接在 XML 文件中使用&
而没有进行转义,就会导致解析错误。在mybatis-config.xml
文件的url
属性中,&
用于连接多个参数,需要进行转义。 - 解决办法:将
url
属性中的&
转义为&
,如上述mybatis-config.xml
文件中的配置所示。
- 错误原因:在 XML 文件中,
六、创建实体类
在 src/main/java
目录下创建 com.example.entity
包(如果不存在该包需手动创建),在该包下创建实体类 User
,用于映射数据库表中的数据,代码如下:
package com.example.entity;
public class User {
private int id;
private String name;
private int age;
// 构造方法、Getter 和 Setter 方法
public User() {}
public User(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
七、创建 Mapper 接口和 XML 文件
- Mapper 接口:在
src/main/java
目录下创建com.example.mapper
包(如果不存在需手动创建),在该包下创建 Mapper 接口UserMapper
,定义数据库操作的方法,代码如下:
package com.example.mapper;
import com.example.entity.User;
import java.util.List;
public interface UserMapper {
List<User> getAllUsers();
}
这个接口定义了一个方法 getAllUsers
,用于从数据库中获取所有用户的信息。
2. Mapper XML 文件:在 src/main/resources
目录下创建 com/example/mapper
目录(如果不存在需手动创建),在该目录下创建与 Mapper 接口对应的 XML 文件 UserMapper.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.example.mapper.UserMapper">
<select id="getAllUsers" resultType="com.example.entity.User">
SELECT * FROM users
</select>
</mapper>
namespace
属性指定了该 Mapper XML 文件对应的 Mapper 接口的全限定名,id
属性对应 Mapper 接口中的方法名,resultType
指定了查询结果映射的实体类。
3. 同时,需要在 mybatis-config.xml
文件的 <mappers>
标签中添加该 Mapper XML 文件的路径:
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
这样 MyBatis 才能找到并加载 Mapper XML 文件中的 SQL 语句。
八、编写测试代码
在 src/test/java
目录下创建 com.example
包(如果不存在需手动创建),在该包下创建测试类 MyBatisTest
,验证 MyBatis 配置和数据库操作是否正常,代码如下:
package com.example;
import com.example.entity.User;
import com.example.mapper.UserMapper;
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;
import java.util.List;
public class MyBatisTest {
public static void main(String[] args) throws Exception {
// 加载 MyBatis 配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 打开 SqlSession
try (SqlSession session = sqlSessionFactory.openSession()) {
// 获取 Mapper 接口实例
UserMapper userMapper = session.getMapper(UserMapper.class);
// 调用 Mapper 方法
List<User> users = userMapper.getAllUsers();
// 输出查询结果
for (User user : users) {
System.out.println(user);
}
}
}
}
这段测试代码首先加载 MyBatis 配置文件,创建 SqlSessionFactory
,然后打开一个 SqlSession
,获取 UserMapper
接口的实例,调用 getAllUsers
方法获取用户列表,并输出查询结果。
九、运行测试代码
运行 MyBatisTest
类的 main
方法,如果一切配置正确,你应该能够看到从数据库中查询到的用户信息,例如:
User{id=1, name='Alice', age=25}
User{id=2, name='Bob', age=30}
通过以上更加完善的步骤,你就可以完成一个基本的 MyBatis 项目的搭建和配置。在实际开发中,你可以根据需求扩展和优化项目,例如添加更多的数据库操作方法、进行事务管理等。