开发基础知识 - Mybatis介绍

Introduction

MyBatis的作用:

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

使用MyBatis

  1. 写配置文件
    告诉MyBatis数据库怎么连接,SQL映射文件的位置
<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>
  1. 定义SQL和映射关系
<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. 定义接口
public interface UserMapper {
    User getUserById(int id);
}
  1. 在service层使用
User user = mapper.getUserById(5);

MyBatis原理

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

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

开发基础知识 - Mybatis介绍
http://example.com/2025/07/13/SWE-basis/Database/mybatis/
Author
Songlin Zhao
Posted on
July 13, 2025
Licensed under