MyBatis 学习笔记

一、什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

官方网站资源:

二、为什么要使用 MyBatis?(解决 JDBC 的问题)

2.1 JDBC 的缺点:

  • 数据库连接硬编码 - 每次都需要手动创建连接

  • SQL 语句硬编码 - SQL 写在 Java 代码中,不易维护

  • 参数手动设置 - 需要手动设置 PreparedStatement 参数

  • 结果集手动封装 - 需要遍历 ResultSet 手动封装对象

  • 资源手动关闭 - 需要手动关闭 Connection、Statement、ResultSet

2.2 MyBatis 的解决方案:

  • 配置文件管理 - 将数据库配置提取到 XML 文件中

  • SQL 与代码分离 - SQL 写在 XML 映射文件中

  • 参数自动映射 - 自动将 Java 对象属性映射到 SQL 参数

  • 结果集自动封装 - 自动将查询结果封装为 Java 对象

  • 资源自动管理 - 自动管理数据库连接的开启和关闭

三、核心概念解析

3.1 持久层

持久层是软件架构中的一个概念,主要负责将数据保存到数据库或从数据库中读取数据。MyBatis 就是一个持久层框架,它封装了数据访问的细节,让开发者可以更专注于业务逻辑的实现。

3.2 执行流程(简单理解)

text

复制代码
配置文件加载 → SqlSessionFactory 创建 → SqlSession 获取 → 执行 SQL → 返回结果

四、MyBatis 快速入门

4.1 如何获取 MyBatis

MyBatis 提供了三种主要获取途径:

途径一:Maven 依赖(推荐)
XML 复制代码
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.10</version> 
</dependency>
途径二:Gradle 依赖
Groovy 复制代码
implementation 'org.mybatis:mybatis:3.5.10'
途径三:直接下载 JAR 包

从官网下载地址:https://github.com/mybatis/mybatis-3/releases

4.2 快速入门步骤

第一步:创建核心配置文件(mybatis-config.xml)

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="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis_test"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <!-- 映射文件配置 -->
  </mappers>
</configuration>

第二步:创建实体类

java 复制代码
public class User {
    private Integer id;
    private String name;
    private Integer age;
    
    // 构造方法、getter、setter 省略
}

第三步:创建映射文件(UserMapper.xml)

第四步:Java 代码中使用

java 复制代码
// 1. 读取配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);

// 2. 创建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = 
    new SqlSessionFactoryBuilder().build(inputStream);

// 3. 获取 SqlSession
try (SqlSession session = sqlSessionFactory.openSession()) {
    // 4. 执行 SQL
    User user = session.selectOne("com.example.mapper.UserMapper.selectUser", 1);
    System.out.println(user);
}

五、学习建议

对于初学者,建议按照以下顺序学习:

  1. 先掌握基本配置和简单 CRUD 操作

  2. 理解参数传递和结果映射

  3. 学习动态 SQL 的使用

  4. 掌握关联查询和复杂映射

  5. 最后学习缓存、插件等高级特性

通过 MyBatis,我们可以将原来繁琐的 JDBC 操作简化为配置文件和简单的接口调用,大大提高了开发效率。后续将深入讲解映射文件配置、动态 SQL、结果集映射等更详细的内容。

相关推荐
未来龙皇小蓝2 小时前
Spring内置常见线程池配置及相关概念
java·后端·spring·系统架构
Elias不吃糖2 小时前
Java 常用数据结构:API + 实现类型 + 核心原理 + 例子 + 选型与性能(完整版)
java·数据结构·性能·实现类
会游泳的石头2 小时前
构建企业级知识库智能问答系统:基于 Java 与 Spring Boot 的轻量实现
java·开发语言·spring boot·ai
m0_748229992 小时前
Laravel4.x核心更新全解析
开发语言·php
j_xxx404_2 小时前
C++算法入门:滑动窗口合集(长度最小的子数组|无重复字符的最长字串|)
开发语言·c++·算法
m0_561359672 小时前
C++中的过滤器模式
开发语言·c++·算法
HL_风神2 小时前
QT事件循环机制源码学习
开发语言·qt·学习
牵牛老人2 小时前
【Qt上位机与下位机交互数据组装与解析:全类型数据转换实战指南】
开发语言·qt·交互
郝学胜-神的一滴2 小时前
B站:从二次元到AI创新孵化器的华丽转身 | Google Cloud峰会见闻
开发语言·人工智能·算法