2025/12/7

MyBatis 是一个 Java 持久层框架(专门帮你操作数据库的工具),它封装了 JDBC 的繁琐细节(比如手动写连接、处理结果集),让你只需要关注 SQL 语句本身,不用操心连接建立、资源关闭等重复工作。
简单说:MyBatis = 简化版的 JDBC + 更灵活的 SQL 管理,是实际开发中替代原生 JDBC 的主流选择。

MyBatis 的核心作用(解决什么问题)
你之前用 JDBC 写 CRUD 时,是不是觉得有这些麻烦?MyBatis 就是来解决这些问题的:
不用手动写 Connection、PreparedStatement、ResultSet 的创建和关闭;
不用手动把查询结果集(ResultSet)的字段映射到 Java 对象(比如把 id、username 对应到 User 类的属性);
不用在 Java 代码里硬写 SQL(可以把 SQL 放到单独的 XML 文件或注解里,方便维护);
自动处理参数绑定(不用手动 setString(1, username),直接传 Java 对象即可)。

MyBatis 和你之前学的 JDBC 对比(直观感受优势)
用 “查询所有用户” 这个功能,对比两者的代码差异,你就能明显感受到 MyBatis 的简洁:
对比维度 原生 JDBC(你之前写的代码) MyBatis 实现方式
连接管理 手动写 DriverManager.getConnection(),还要关连接 配置文件里写数据库信息,MyBatis 自动管理连接
SQL 位置 硬写在 Java 代码里(字符串) 写在 XML 文件或注解里,和 Java 代码分离
参数绑定 手动 pstmt.setString(1, username)(容易出错) 直接传 Java 对象,MyBatis 自动对应 ? 占位符
结果映射 手动 rs.getInt("id")、rs.getString("username") MyBatis 自动把结果集映射到 User 对象列表
代码量 多(重复的连接、关闭、映射代码) 少(只需要定义接口和 SQL)

MyBatis 的核心用法
MyBatis 的核心是 “接口 + SQL 映射”,步骤比 JDBC 更简洁,以 “查询所有用户” 为例:

  1. 第一步:定义 Java 实体类(和数据库表对应)
    java
    运行
    // User 类(对应数据库的 user 表)
    public class User {
    private Integer id;
    private String username;
    private Integer age;
    private String email;

    // getter、setter 方法(必须有,MyBatis 要通过它赋值)
    // toString 方法(方便打印)
    }

  2. 第二步:定义 Mapper 接口(相当于 DAO 层,声明操作方法)
    java
    运行
    // UserMapper 接口(不用写实现类,MyBatis 自动生成)
    public interface UserMapper {
    // 注解方式写 SQL(简单 SQL 用注解,复杂 SQL 用 XML)
    @Select("SELECT id, username, age, email FROM user")
    List findAll(); // 声明查询所有用户的方法
    }

  3. 第三步:配置 MyBatis(核心配置文件,告诉 MyBatis 数据库信息)
    创建 mybatis-config.xml(放在 resources 目录下):
    xml

<!-- 告诉 MyBatis 哪里有 Mapper 接口 -->
<mappers>
    <mapper class="com.example.mapper.UserMapper"/>
</mappers>
4. 第四步:执行查询(使用 MyBatis 核心 API) java 运行 public class MyBatisDemo { public static void main(String[] args) throws IOException { // 1. 加载 MyBatis 配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    // 2. 创建 SqlSessionFactory(MyBatis 核心工厂)
    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
    
    // 3. 获取 SqlSession(相当于 JDBC 的 Connection,用于执行 SQL)
    SqlSession session = factory.openSession();
    
    // 4. 获取 Mapper 接口的代理对象(MyBatis 自动生成实现类)
    UserMapper userMapper = session.getMapper(UserMapper.class);
    
    // 5. 执行查询(直接调用接口方法,MyBatis 自动执行 SQL 并映射结果)
    List<User> userList = userMapper.findAll();
    
    // 6. 打印结果(不用手动处理 ResultSet)
    for (User user : userList) {
        System.out.println(user);
    }
    
    // 7. 关闭资源(比 JDBC 简洁)
    session.close();
    is.close();
}

}

MyBatis 的核心特点(为什么实际开发都用它)
SQL 灵活:不像 JPA 等框架会自动生成 SQL,MyBatis 允许你手动写 SQL,适合复杂查询场景;
低侵入性:不需要让实体类继承特定父类或实现特定接口,只需要普通 Java 类;
简化开发:自动完成 “参数绑定” 和 “结果映射”,减少重复代码;
易于维护:SQL 可以集中管理在 XML 文件中,方便优化和修改。
总结
MyBatis 是 JDBC 的增强工具,核心是 “简化数据库操作,让开发者专注 SQL”;
相比 JDBC,它解决了 “连接管理、结果映射、参数绑定” 等繁琐工作,代码更简洁;
核心用法是 “Mapper 接口 + SQL 映射(注解 / XML)”,配置简单,容易上手。

posted on 2025-12-03 18:51  才一斤  阅读(0)  评论(0)    收藏  举报

导航