文章目录
MyBatis 简介
MyBatis 是一款优秀的 持久层框架(ORM 框架),它支持 定制化 SQL、存储过程以及高级映射,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 可以使用简单的 XML 或注解 来配置和映射数据库操作,使得 Java 开发者可以更专注于 SQL 本身,而不需要过多处理 JDBC 的繁琐操作。
1. MyBatis 核心特点
✅ 轻量级:相比 Hibernate,MyBatis 更加轻量,不强制使用特定的对象关系映射(ORM)方式。
✅ 灵活的 SQL 控制:开发者可以编写原生 SQL,优化复杂查询。
✅ 支持动态 SQL:提供 <if>
, <choose>
, <foreach>
等标签,便于构建动态查询。
✅ 易于集成:可以与 Spring、Spring Boot 无缝集成(如 mybatis-spring-boot-starter
)。
✅ 缓存机制:支持一级缓存(SqlSession 级别)和二级缓存(Mapper 级别),提高查询性能。
2. MyBatis 核心组件
组件 | 说明 |
---|---|
SqlSessionFactory | 用于创建 SqlSession ,是 MyBatis 的核心对象。 |
SqlSession | 代表一次数据库会话,用于执行 SQL 并获取映射结果。 |
Mapper 接口 | 定义数据库操作的方法,MyBatis 会动态生成实现类。 |
Mapper XML | 存放 SQL 映射文件,定义 SQL 语句和结果映射规则。 |
Configuration | 存储 MyBatis 的所有配置信息(数据源、缓存、映射等)。 |
3. MyBatis 基本使用示例
(1) 依赖引入(Maven)
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
(如果使用 Spring Boot 3.x,推荐 3.0.x
版本;Spring Boot 2.x 可用 2.3.x
)
(2) 定义 Mapper 接口
@Mapper // Spring Boot 会自动扫描并注册该接口
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(Long id);
@Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void insertUser(User user);
}
(也可以用 XML 方式定义 SQL)
(3) 定义实体类
public class User {
private Long id;
private String name;
private String email;
// getters & setters
}
(4) 在 Service 层调用
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUserById(Long id) {
return userMapper.getUserById(id);
}
public void addUser(User user) {
userMapper.insertUser(user);
}
}
4. MyBatis 与 JPA/Hibernate 对比
特性 | MyBatis | JPA/Hibernate |
---|---|---|
SQL 控制 | 开发者完全控制 SQL | 自动生成 SQL,也可自定义 |
灵活性 | 适合复杂查询 | 适合标准 CRUD |
学习曲线 | 较简单 | 较复杂(需掌握 JPA 规范) |
性能优化 | 手动优化 SQL | 自动优化,但可能不够灵活 |
适用场景 | 需要精细控制 SQL 的项目 | 快速开发、标准化的项目 |
过分简单了,后面会补充的。。