首页
/ MyBatis 3 入门指南:从安装到基础使用

MyBatis 3 入门指南:从安装到基础使用

2025-07-08 05:32:21作者:姚月梅Lane

概述

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。本文将详细介绍如何开始使用 MyBatis 3。

安装 MyBatis

基本安装

要使用 MyBatis,只需将 mybatis-x.x.x.jar 文件包含在类路径中即可。

使用 Maven 安装

如果你使用 Maven 构建项目,只需在 pom.xml 文件中添加以下依赖:

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

构建 SqlSessionFactory

从 XML 构建

每个 MyBatis 应用都以 SqlSessionFactory 实例为核心。可以通过 SqlSessionFactoryBuilder 来构建 SqlSessionFactory 实例。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

配置文件示例:

<?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="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

不使用 XML 构建

也可以直接通过 Java 代码构建配置:

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

获取 SqlSession

有了 SqlSessionFactory 后,就可以获取 SqlSession 实例:

SqlSession session = sqlSessionFactory.openSession();
try {
  Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
  session.close();
}

更推荐使用接口方式:

SqlSession session = sqlSessionFactory.openSession();
try {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  Blog blog = mapper.selectBlog(101);
} finally {
  session.close();
}

映射 SQL 语句

XML 映射方式

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

注解方式

package org.mybatis.example;
public interface BlogMapper {
  @Select("SELECT * FROM blog WHERE id = #{id}")
  Blog selectBlog(int id);
}

作用域和生命周期

SqlSessionFactoryBuilder

这个类可以被实例化、使用和丢弃。一旦创建了 SqlSessionFactory,就不再需要它了。最佳作用域是方法作用域。

SqlSessionFactory

SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在。最佳作用域是应用作用域。

SqlSession

每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此最佳作用域是请求或方法作用域。

Mapper 实例

Mapper 实例的最佳作用域是方法作用域。它们应该在方法中被请求,然后被丢弃。

SqlSession session = sqlSessionFactory.openSession();
try {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  // 执行操作
} finally {
  session.close();
}

总结

本文介绍了 MyBatis 3 的基本使用方法,包括安装、配置、获取 SqlSession 以及执行 SQL 映射。理解这些基础概念对于后续深入学习 MyBatis 的高级特性至关重要。