当前位置: 首页 > news >正文

Mybatis的简单介绍

文章目录

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

<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 对比

特性MyBatisJPA/Hibernate
SQL 控制开发者完全控制 SQL自动生成 SQL,也可自定义
灵活性适合复杂查询适合标准 CRUD
学习曲线较简单较复杂(需掌握 JPA 规范)
性能优化手动优化 SQL自动优化,但可能不够灵活
适用场景需要精细控制 SQL 的项目快速开发、标准化的项目

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

相关文章:

  • 记一次Agora-RTSALite编译遇到的问题
  • SuperPoint论文及源码解读
  • 使用Lombok无法生成Getter()与Setter()和toString()方法的解决方案
  • RocketMQ 中 DefaultMessageStore 的 AllocateMappedFileService 属性详解
  • 【Linux】Linux 权限:数字背后的神秘 “门禁卡” 系统
  • 剖析Spring中的设计模式(一) | 工厂观察者
  • 【零基础玩转多模态AI:Gemma3 27B开源视觉模型本地部署与远程访问】
  • 全星APQP软件:为用户提供高效、合规、便捷的研发管理体验
  • HDLBIT知识点
  • 探索 Vue 3 响应式系统:原理与实践
  • 蓝桥杯电子赛_E2PROM(AT24C02)
  • Agent 2 Agent VS MCP
  • 【C++】深拷贝与浅拷贝
  • GitHub 趋势日报 (2025年04月08日)
  • C语言精讲-12
  • 【Linux】基础开发工具
  • 八大可商用桌面客户端应用开发框架深度指南-优雅草卓伊凡
  • 操作系统基础:05 系统调用实现
  • playwright 教程高级篇:掌握网页自动化与验证码处理等关键技术详解
  • [数据结构]排序 --2
  • 小程序做视频网站/网络营销策划方案ppt模板
  • 个人网页设计html加js代码/seo网站推广专员
  • 网站开发后端/网络营销sem培训
  • 做网站需要什么学历/企业网站制作价格
  • 网站建设开发方案/品牌推广包括哪些内容
  • 湖南建设厅官网平台/郑州seo网络推广