开发基础知识 - Mybatis介绍

Introduction

MyBatis的作用:

  • 自定义MySQL内容,自由度高
  • 对象映射,查询结果会自动转换成 Java 对象
  • 代码解耦,SQL 写在 XML 里

使用MyBatis

  1. 写配置文件
    告诉MyBatis数据库怎么连接,SQL映射文件的位置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!-- mybatis-config.xml -->
    <configuration>
    <environments>
    <environment id="dev">
    <dataSource type="POOLED">
    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
    ...
    </dataSource>
    </environment>
    </environments>
    <mappers>
    <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
    </configuration>
  2. 定义SQL和映射关系

    1
    2
    3
    4
    5
    6
    <!-- UserMapper.xml -->
    <mapper namespace="com.example.UserMapper">
    <select id="getUserById" resultType="User">
    SELECT * FROM user WHERE id = #{id}
    </select>
    </mapper>
  • resultType=”User” 表示 SQL 查询结果转换成 User 对象
  • #{id} 是 MyBatis 的占位符,会自动替换参数
  1. 定义接口

    1
    2
    3
    public interface UserMapper {
    User getUserById(int id);
    }
  2. 在service层使用

1
User user = mapper.getUserById(5);

MyBatis原理

MyBatis 利用 Java 的动态代理机制,把你写的 Mapper 接口(如 UserMapper)动态生成一个实现类,这个实现类会根据配置的 XML/注解执行对应的 SQL,并自动把结果映射成对象。

1
2
3
4
5
// 这个 SqlSession 是每次数据库操作的“会话对象”
SqlSession session = sqlSessionFactory.openSession();
// 核心:动态生成 Mapper 实现类
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.getUserById(5);

开发基础知识 - Mybatis介绍
https://thiefcat.github.io/2025/07/13/SWE-basic/database/mybatis/
Author
小贼猫
Posted on
July 13, 2025
Licensed under