全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-20 8 分钟 ✍️ juanwangdev

MyBatis 框架简介

MyBatis 是优秀的持久层框架,下面梳理其核心定位与优势。

框架定位

什么是 MyBatis

MyBatis 是一款半自动化的 ORM(对象关系映射)框架,它将 SQL 语句与 Java 代码分离,通过 XML 或注解配置 SQL 映射到 Java 对象。

XML
<!-- 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/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

半自动化 ORM 特性

特性MyBatisHibernate
SQL 控制开发者手写 SQL框架自动生成 SQL
灵活性高,可优化复杂查询低,复杂查询受限
学习成本低,只需掌握 SQL高,需理解 HQL、缓存机制
适用场景复杂查询、性能敏感简单 CRUD、快速开发

核心优势

SQL 与代码分离

SQL 集中在 XML 映射文件中,便于维护和优化:

XML
<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectById" resultType="com.example.entity.User">
        SELECT * FROM user WHERE id = #{id}
    </select>
</mapper>

灵活的参数与结果映射

Java
// Java 接口
public interface UserMapper {
    User selectById(Integer id);
}

// 调用方式
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectById(1);

注意:MyBatis 不屏蔽 SQL 细节,开发者需自行编写和优化 SQL,适合对数据库操作有精细控制需求的场景。

适用场景

  • 复杂查询:多表关联、子查询、动态 SQL
  • 性能优化:需精确控制 SQL 执行计划、索引使用
  • 遗留数据库:表结构不规范,无法直接使用全自动 ORM

注意:若项目以简单 CRUD 为主且追求开发效率,可考虑 MyBatis-Plus 或 Spring Data JPA。

要点总结

  • MyBatis 是半自动化 ORM 框架,SQL 与代码分离
  • 核心优势是灵活的 SQL 控制与低学习成本
  • 适合复杂查询、性能敏感场景
  • 不适合追求快速开发的简单 CRUD 项目

文章存放路径:articles/MYBATIS/入门/MyBatis 概述与环境搭建/MyBatis 框架简介.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 Mapper 代码生成
下一篇 → 开发环境搭建
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库