1565 字
约 5 分钟
16
第一个MyBatis程序
无标签

第03章 第一个MyBatis程序

创建并运行第一个 MyBatis 应用程序
学习进度:12% 代码演示按钮 💻 查看完整代码 - 在线IDE体验

🎯 学习目标

📚

理解核心概念

掌握本章的核心概念和基本原理
🔧

掌握实践技能

学会相关的配置方法和实践技巧
💡

了解应用场景

明确在实际项目中的应用场景和最佳实践

🎯 MyBatis工作流程

在开始编写第一个MyBatis程序之前,我们需要了解MyBatis的基本工作流程:
步骤1:读取配置文件
加载mybatis-config.xml主配置文件,获取数据源和映射器配置信息。
步骤2:创建SqlSessionFactory
根据配置文件创建SqlSessionFactory,这是MyBatis的核心工厂类。
步骤3:获取SqlSession
从SqlSessionFactory获取SqlSession,这是执行SQL的会话对象。
步骤4:执行SQL语句
通过SqlSession执行映射文件中定义的SQL语句。
步骤5:处理结果
获取并处理SQL执行结果。
步骤6:关闭SqlSession
释放数据库连接资源。

📁 项目结构

我们的第一个MyBatis程序将包含以下文件:

chapter-03-first-program/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/mybatis/firstprogram/
│ │ │ └── FirstProgramDemo.java
│ │ └── resources/
│ │ ├── mybatis-config.xml # MyBatis主配置文件
│ │ ├── db.properties # 数据库配置
│ │ ├── log4j.properties # 日志配置
│ │ ├── init.sql # 数据库初始化脚本
│ │ └── mappers/
│ │ └── UserMapper.xml # SQL映射文件
│ └── test/
│ └── java/
│ └── com/example/mybatis/firstprogram/
│ └── FirstProgramTest.java
├── pom.xml
└── README.md

🔧 核心配置文件

1. MyBatis主配置文件 (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>
    <!-- 引入数据库配置文件 -->
    <properties resource="db.properties"/>
    
    <!-- 环境配置 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${db.driver}"/>
                <property name="url" value="${db.url}"/>
                <property name="username" value="${db.username}"/>
                <property name="password" value="${db.password}"/>
            </dataSource>
        </environment>
    </environments>
    
    <!-- 映射器配置 -->
    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>
</configuration>

2. 数据库配置文件 (db.properties)

将数据库连接信息单独配置,便于管理:

db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&serverTimezone=UTC
db.username=root
db.password=123456

3. SQL映射文件 (UserMapper.xml)

定义SQL语句和参数映射:

<?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.mybatis.mapper.UserMapper">
    
    <!-- 查询所有用户 -->
    <select id="selectAllUsers" resultType="map">
        SELECT id, username, email, create_time, update_time 
        FROM user ORDER BY id
    </select>
    
    <!-- 根据ID查询用户 -->
    <select id="selectUserById" parameterType="int" resultType="map">
        SELECT id, username, email, create_time, update_time 
        FROM user WHERE id = #{id}
    </select>
    
</mapper>

💻 Java代码实现

主程序类 (FirstProgramDemo.java)

演示MyBatis的基本使用方法:

public class FirstProgramDemo {
    
    public static void main(String[] args) {
        System.out.println("MyBatis 第一个程序演示");
        demonstrateMyBatisBasics();
    }
    
    private static void demonstrateMyBatisBasics() {
        SqlSession sqlSession = null;
        try {
            // 1. 读取配置文件
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            
            // 2. 创建SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = 
                new SqlSessionFactoryBuilder().build(inputStream);
            
            // 3. 获取SqlSession
            sqlSession = sqlSessionFactory.openSession();
            
            // 4. 执行SQL语句
            List<Map<String, Object>> users = sqlSession.selectList(
                "com.example.mybatis.mapper.UserMapper.selectAllUsers");
            
            // 5. 处理结果
            System.out.println("查询结果: " + users.size() + " 条记录");
            
        } catch (IOException e) {
            System.out.println("配置文件读取失败: " + e.getMessage());
        } catch (Exception e) {
            System.out.println("MyBatis操作异常: " + e.getMessage());
        } finally {
            // 6. 关闭SqlSession
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }
}

🗄️ 数据库准备

在运行程序之前,需要创建数据库和表:

-- 创建数据库
CREATE DATABASE IF NOT EXISTS mybatis_demo CHARACTER SET utf8mb4;

-- 使用数据库
USE mybatis_demo;

-- 创建用户表
CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 插入测试数据
INSERT INTO user (username, email) VALUES
('张三', '[email protected]'),
('李四', '[email protected]'),
('王五', '[email protected]');

🧪 测试验证

编写单元测试验证程序功能:

@Test
public void testSelectAllUsers() {
    try {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = 
            new SqlSessionFactoryBuilder().build(inputStream);
        
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            List<Map<String, Object>> users = sqlSession.selectList(
                "com.example.mybatis.mapper.UserMapper.selectAllUsers");
            assertNotNull(users);
            System.out.println("测试通过,查询到 " + users.size() + " 条记录");
        }
    } catch (Exception e) {
        fail("测试失败: " + e.getMessage());
    }
}

🔑 核心概念理解

SqlSessionFactoryMyBatis的核心工厂类,用于创建SqlSession全局唯一,线程安全,通常设计为单例包含了数据源配置和映射器配置信息

SqlSession数据库会话对象,用于执行SQL语句线程不安全,不能在多线程间共享使用完毕后必须关闭以释放资源

Mapper映射器定义SQL语句和参数映射的XML文件通过namespace和id唯一标识每个SQL语句支持参数映射和结果映射

⚠️ 注意事项

资源管理始终确保SqlSession被正确关闭推荐使用try-with-resources语句自动管理资源SqlSessionFactory通常设计为全局单例

线程安全SqlSessionFactory是线程安全的SqlSession不是线程安全的,不要在多线程间共享每个线程都应该有自己的SqlSession实例

🚀 运行程序

  1. 确保MySQL服务已启动
  2. 执行init.sql脚本创建数据库和表
  3. 修改db.properties中的数据库连接信息
  4. 运行FirstProgramDemo.main()方法
  5. 运行测试用例验证功能

预期输出:MyBatis 第一个程序演示查询结果: 3 条记录

📈 学习收获

通过本章的学习,你应该掌握了:

  • MyBatis的基本工作流程
  • 主配置文件的编写方法
  • SQL映射文件的创建
  • SqlSessionFactory和SqlSession的使用
  • 基本的查询操作
  • 资源管理的重要性

💡 本章小结

本章我们创建了第一个MyBatis程序,学习了配置文件的编写、映射文件的创建,以及通过SqlSession执行数据库操作。通过实际的增删改查操作,深入理解了MyBatis的工作原理和基本用法。下一章预告:我们将深入学习MyBatis的配置文件,包括数据源配置、事务管理、插件配置等高级特性。

下一章节 🎉

恭喜完成本章学习!

你已经掌握了 第一个MyBatis程序 的核心知识
第04章

核心配置文件

深入学习MyBatis的配置文件,包括数据源配置、事务管理、插件配置等高级特性
⭐⭐⭐ 中等⏱️ 35分钟开始学习 → ← 第02章 📚 课程目录 第04章 →

第一个MyBatis程序
https://clxhxhhr.top/posts/2845/
作者
clxstart
发布于
2026-09-19
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。