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 的高级特性至关重要。