简介
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
入门
安装
普通 Java 项目,只需要把 mybatis-xxx.jar 导入 classpath 即可。
如果是 maven 项目,需要在 pom 文件中添加以下依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
数据库表 user
实体类 User
public class User {
private Long id;
private String username;
private String address;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", address='" + address + '\'' +
'}';
}
}
全局配置文件 mybatis-config.xml
<?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="dev">
<environment id="dev">
<!-- 事务管理器 -->
<transactionManager type="JDBC" />
<!-- 数据源 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 映射文件 -->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
映射文件 UserMapper.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="com.mapper.UserMapper">
<select id="findUserById" resultType="com.entity.User">
select * from tb_user where id = #{id}
</select>
</mapper>
基本使用
核心类
- SqlSessionFactoryBuilder:读取配置文件构建 SqlSessionFactory 对象
- SqlSessionFactory:顾名思义,SqlSession 的工厂类
- SqlSession:SQL 会话,执行具体 CRUD 操作
public static void main(String[] args) {
// 读取配置文件
String path = "mybatis-config.xml";
try (InputStream inputStream = Resources.getResourceAsStream(path)) {
// 创建sqlSession工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 查询数据
User user = sqlSession.selectOne("com.mapper.UserMapper.findUserById", 1);
System.out.println(user);
} catch (IOException e) {
e.printStackTrace();
}
}
执行结果:
Mybatis执行流程简单分析:
- 读取 mybatis-config.xml 获取数据源;
- 读取 UserMapper.xml 文件获取 SQL 语句相关信息;
- SqlSession 执行 CRUD 操作;
- 映射成对应的实体类对象。