MyBatis基础教程:Java持久层框架入门
卓越的月亮
2025-06-22 15:14
阅读 615
开篇:MyBatis是什么?我们为什么要用它?

在Java开发中,我们常常需要和数据库打交道。比如写一个网站的注册系统,用户输入的信息就需要保存到数据库里。但是原生的JDBC操作非常繁琐,代码量大、重复性高。
这个时候,我们就需要用到MyBatis这个工具 —— 它是一个轻量级的 持久层框架(Persistence Framework)。简单来说,它可以帮助我们在Java程序和数据库之间建立桥梁,让我们更轻松地操作数据库。
✅ 持久层是什么?
程序运行时数据存在内存中,断电就没有了。而“持久层”就是负责把数据长期保存到硬盘或数据库中的那一层。
环境准备:搭建你的第一个MyBatis环境

1. 所需工具清单:
- Java 开发环境(推荐JDK 1.8以上)
- Maven(项目构建工具)
- IntelliJ IDEA 或 Eclipse(IDE)
- MySQL(或其他支持的数据库)
2. 创建Maven项目
使用IDE创建一个Maven项目,或者在命令行执行:
mvn archetype:generate -DgroupId=com.example -DartifactId=mybatis-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
3. 添加MyBatis依赖
打开 pom.xml 文件,在 <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>
然后执行 mvn install 下载依赖。
核心概念:什么是SQL映射文件、Mapper接口?

理解下面几个核心概念,是学会MyBatis的关键:
1. Mapper XML 文件(SQL 映射文件)
这是一个 .xml 文件,里面专门写我们与数据库交互的 SQL 语句。
举个例子:
<!-- src/main/resources/UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
<select id="findUserById" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
2. Mapper 接口(Java接口)
这是Java中定义方法的地方,每个方法对应一条SQL语句。
public interface UserMapper {
User findUserById(int id);
}
MyBatis会自动将这个接口的方法与XML中的SQL语句绑定。
3. Configuration 配置文件(全局配置)
我们需要告诉MyBatis数据库怎么连接,例如账号、密码、驱动等信息。
<!-- src/main/resources/mybatis-config.xml -->
<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?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
实战项目:做一个简单的查询用户功能
现在我们来一起做个小项目:从数据库中查找一个用户的信息。
步骤一:创建数据库和表
在MySQL中执行下面的SQL:
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
email VARCHAR(50)
);
INSERT INTO user (name, email) VALUES ('张三', 'zhangsan@example.com');
步骤二:编写实体类 User.java
public class User {
private int id;
private String name;
private String email;
// getters and setters...
}
步骤三:编写 UserMapper 接口
public interface UserMapper {
User findUserById(int id);
}
步骤四:编写 UserMapper.xml 文件
<mapper namespace="com.example.mapper.UserMapper">
<select id="findUserById" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
步骤五:测试主函数入口
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;
public class App {
public static void main(String[] args) throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.findUserById(1);
System.out.println(user.getName());
}
}
}
如果一切正常,控制台会输出:张三 ✅
常见问题解答
Q1:找不到Mapper接口怎么办?
确保你在配置文件中正确引入了对应的XML文件:
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
同时确认命名空间(namespace)和接口的全限定名一致。
Q2:报错提示字段名不匹配?
可能是数据库字段名和Java类属性名不同。可以在SQL中使用别名:
<select id="findUserById" resultType="com.example.model.User">
SELECT id as id, name as name, email as email FROM user WHERE id = #{id}
</select>
Q3:连接不上数据库怎么办?
检查一下:
- 数据库是否启动?
- 用户名、密码是否正确?
- URL格式有没有错误?
学习建议:下一步该怎么学?

学会了基本的查询之后,你可以继续学习以下内容:
| 内容 | 说明 |
|---|---|
| 插入、更新、删除操作 | 编写 insert/update/delete 语句 |
| 动态SQL | 使用 <if>、<foreach> 等实现条件拼接SQL |
| 注解方式 | 不用XML也能写SQL,适合简单项目 |
| 多表关联查询 | 查询两个表之间的数据 |
| 事务管理 | 控制数据库操作的一致性 |
📚 推荐资料:
- MyBatis官方文档
- B站视频《尚硅谷MyBatis教程》
- 书籍:《MyBatis从入门到精通》
希望这篇教程能帮助你迈出学习 MyBatis 的第一步!如果你遇到了任何问题,欢迎留言交流。祝你编码愉快 😊
标签:GoReactPython综合
为你推荐
暂无相关推荐

评论 0