MyBatis 简单使用
本文将介绍如何在项目中使用 MyBatis 。
一、导入依赖
1. Maven 项目
在 pom.xml 中添加依赖:
1  |  | 
2. 其它项目
(1) 下载 JAR 包
JAR 包及源码下载地址:https://github.com/mybatis/mybatis-3/releases
(2) 添加依赖
在 IDEA 中依次打开 file - Project Structure - Modules - Dependencies,单击 + ,选择 JARs or directories,选中下载下来的 mybatis-X.X.X.jar 即可。
二、构建 SqlSessionFactory
1. 说明
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
MyBatis 以 SqlSessionFactory 的实例为核心
SqlSessionFactory 实例的构建需要配置
可以使用 XML 文件进行配置
使用 XML 文件进行配置有诸多好处
- 配置与代码分离
 - 利于维护
 - 利于扩展
 
2. 配置
(1) 使用 XML
具体请看:
在 src\main\resources 下新建 mybatis-config.xml,代码如下:
1  |  | 
(2) 不使用 XML
不建议
3. 构建 SqlSessionFactory
在 src\main\java 下新建 utils 包,新建 MyBatisUtils 类,代码如下:
1  |  | 
三、获取 SqlSession
在构建了 SqlSessionFactory 之后,便可以通过它获取 SqlSession 实例。
在 MyBatisUtils 类中新增类方法:
1  |  | 
调用 MyBatisUtils 类的类方法,获取 SqlSession 实例后,便可以执行”已映射”的 SQL 语句。
四、执行 SQL
1. JDBC 的做法
(1) 定义接口
新建 XxxDao 接口,定义抽象方法。
在 dao 文件夹中新建 UserDao 接口,定义抽象方法:
 1
2
3public interface UserDao {
public List<User> getUserList();
}
(2) 定义接口实现类
定义 XxxDaoImpl 接口实现类,实现抽象方法。
在 dao 文件夹中新建 UserDaoImpl 类,实现接口:
 1
2
3
4
5public class UserDaoImpl implements UserDao {
public List<User> getUserList() {
···JDBC代码···
}
}
(3) 执行 SQL
实例化接口实现类,赋值给接口变量,调用方法。
 1
2UserDao userDao = new UserDaoImpl();
List<User> users = userDao.getUserList();
2. Mybatis 的做法
(1) 定义接口
新建 XxxMapper 接口,定义抽象方法。
在 dao 文件夹中新建 UserMapper 接口,定义抽象方法。
 1
2
3public interface UserMapper {
public List<User> getUserList();
}
(2) 定义 SQL 映射
需要建立接口中抽象方法与 SQL 语句的映射关系,可以通过 XML 或注解来定义
(3) 执行 SQL(全限定名法)
通过 全限定接口名.抽象方法名 可以定位到已映射至接口上抽象方法的 SQL 语句。
调用 sqlSession 的实例方法,传入 全限定接口名.抽象方法名 和 SQL 语句所需的参数,执行 SQL 。
1  |  | 
示例:
 1sqlSession.selectOne("org.example.UserMapper.getUserList");
(2) 执行 SQL(接口绑定法)
更好的方法
调用 sqlSession 的
getMapper()实例方法,传入接口的 class 对象,获得 mapper 实例这里的 mapper 实例可以简单看作接口实现类的实例
将 mapper 实例赋值给类型为接口的变量
调用方法
1  |  | 
 1
2
3
4
5// 获取 mapper 实例
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 调用方法,执行 SQL
List<User> userList = mapper.getUserList();
3. SQL 映射的作用
通过映射,将 SQL 语句 与 数据操作方法 相绑定,相比于接口实现类,较少了大量冗余的代码。
4. XML 定义 SQL 映射
具体请看:
用 XxxMapper.xml 替代复杂繁琐的接口实现类 XxxMapperImpl 。
创建 XxxMapper.xml,代码如下:
1  |  | 
5. 注解定义 SQL 映射
可以通过注解来完成语句映射,例如:
1  |  | 
仅适用于简单的 SQL 语句。