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
3
public interface UserDao {
public List<User> getUserList();
}
(2) 定义接口实现类
定义 XxxDaoImpl 接口实现类,实现抽象方法。
在 dao 文件夹中新建 UserDaoImpl 类,实现接口:
1
2
3
4
5
public class UserDaoImpl implements UserDao {
public List<User> getUserList() {
···JDBC代码···
}
}
(3) 执行 SQL
实例化接口实现类,赋值给接口变量,调用方法。
1
2
UserDao userDao = new UserDaoImpl();
List<User> users = userDao.getUserList();
2. Mybatis 的做法
(1) 定义接口
新建 XxxMapper 接口,定义抽象方法。
在 dao 文件夹中新建 UserMapper 接口,定义抽象方法。
1
2
3
public interface UserMapper {
public List<User> getUserList();
}
(2) 定义 SQL 映射
需要建立接口中抽象方法与 SQL 语句的映射关系,可以通过 XML 或注解来定义
(3) 执行 SQL(全限定名法)
通过 全限定接口名.抽象方法名
可以定位到已映射至接口上抽象方法的 SQL 语句。
调用 sqlSession 的实例方法,传入 全限定接口名.抽象方法名
和 SQL 语句所需的参数,执行 SQL 。
1 |
|
示例:
1
sqlSession.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 语句。