MyBatis 是優秀的持久層框架,支援自定義 SQL、存儲過程、高級映射,幾乎消除 JDBC 樣板代碼。本文從核心概念、架構分層、依賴包到完整入門範例 (XML 配置版) 逐步講解。
MappedStatement (含參數映射、SQL、結果映射) 緩存記憶體
| 層級 | 職責 |
|---|---|
| API 接口層 | 對外暴露操作數據庫的接口,委派給數據處理層 |
| 數據處理層 | SQL 查找、解析、執行、結果映射,完成單次 DB 操作 |
| 基礎支撐層 | 連接管理、事務管理、配置加載、緩存處理等共用組件 |

package com.oumyye.model;
public class User {
private String id, name; private int age;
// getter/setter/toString 省略
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.oumyye.mapping.UserMapping">
<select id="getUser" parameterType="String" resultType="com.oumyye.model.User">
select * from user where id = #{id}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://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.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/oumyye/mapping/UserMapping.xml"/>
</mappers>
</configuration>
package test;
import org.apache.ibatis.session.*;
import org.junit.Test;
import com.oumyye.model.User;
import java.io.InputStream;
public class Tests {
@Test
public void test() {
String resource = "mybatis.xml";
InputStream is = Tests.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
String statement = "com.oumyye.mapping.UserMapping.getUser";
User user = session.selectOne(statement, "1123");
System.out.println(user); // User [id=1123, name=xxx, age=xx]
}
}
src/ ├── com/oumyye/model/User.java ├── com/oumyye/mapping/UserMapping.xml ├── mybatis.xml └── test/Tests.java


Hibernate/MyBatis 共同模式:配置文件 → SessionFactory → Session → CRUD + 事務提交 → 關閉 Session → Mapping 文件對應 Java 對象與資料表。