Mybatis的简单介绍

文章目录

        • [MyBatis 简介](#MyBatis 简介)
    • [1. MyBatis 核心特点](#1. MyBatis 核心特点)
    • [2. MyBatis 核心组件](#2. MyBatis 核心组件)
    • [3. MyBatis 基本使用示例](#3. MyBatis 基本使用示例)
      • [(1) 依赖引入(Maven)](#(1) 依赖引入(Maven))
      • [(2) 定义 Mapper 接口](#(2) 定义 Mapper 接口)
      • [(3) 定义实体类](#(3) 定义实体类)
      • [(4) 在 Service 层调用](#(4) 在 Service 层调用)
    • [4. MyBatis 与 JPA/Hibernate 对比](#4. MyBatis 与 JPA/Hibernate 对比)
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)

xml 复制代码
<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 接口

java 复制代码
@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) 定义实体类

java 复制代码
public class User {
    private Long id;
    private String name;
    private String email;
    // getters & setters
}

(4) 在 Service 层调用

java 复制代码
@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 的项目 快速开发、标准化的项目

过分简单了,后面会补充的。。

相关推荐
PacosonSWJTU9 小时前
(转)mybatis拦截器
数据库·redis·mybatis
二等饼干~za89866813 小时前
豆包GEO优化源码开发全解析:技术架构、实现逻辑与实操指南
数据库·sql·重构·架构·mybatis·音视频
星晨雪海13 小时前
MyBatis-Plus 常用 CRUD 方法大全
linux·tomcat·mybatis
yangyanping2010815 小时前
广告系统设计二之RTA系统设计
java·spring·mybatis
Boop_wu15 小时前
[Mybatis] MyBatis 快速入门教程(2)
mybatis
※DX3906※16 小时前
SpringBoot之旅4: MyBatis 操作数据库(进阶) 动态SQL+MyBatis-Plus实战,从入门到熟练,再也不踩绑定异常、SQL拼接坑
java·数据库·spring boot·spring·java-ee·maven·mybatis
柒.梧.17 小时前
Redis持久化详解:RDB与AOF的核心原理及使用指南
mybatis
mygljx21 小时前
SpringBoot+Mybatis-plus实现分页查询(一看就会)
spring boot·mybatis·状态模式
独断万古他化1 天前
【Java 实战项目】多用户网页版聊天室:消息传输模块 —— 基于 WebSocket 实现实时通信
java·spring boot·后端·websocket·ajax·mybatis
我真会写代码2 天前
SpringBoot自动装配原理:告别繁琐配置,读懂底层逻辑
java·spring boot·mybatis