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

MyBatis 框架学习研究笔记(一) 简化数据库操作:MyBatis-Plus 的魔法世界


大家好,今天我们要聊的是那个让数据库操作变得简单到令人难以置信的神器——MyBatis-Plus。如果你还在为编写繁琐的数据库 CRUD 代码而头疼,那么这篇文章将是你的救星!


在介绍 MyBatis-Plus 之前,我们先来认识一下 MyBatis


一、MyBatis


1、🤔 什么是 MyBatis?


MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型或数据库的复杂类型,是一个灵活的数据映射框架。

MyBatis 通常用于 Java 应用程序中,作为数据访问层的解决方案,它通过简化数据访问代码,让开发者可以更专注于业务逻辑的实现。


2、✨MyBatis 的主要特点


  • SQL 编写灵活:MyBatis 允许开发者将 SQL 语句直接写在 XML 文件中,这样可以很容易地进行维护和调整。
  • 支持映射复杂类型:MyBatis 支持将数据库中的记录集映射成 Java 对象,也支持将 Java 对象映射回数据库记录。
  • 支持延迟加载:MyBatis 可以配置懒加载,即在需要的时候才加载数据,这有助于提高应用程序的性能。
  • 支持注解和 XML 配置:MyBatis 支持使用注解或 XML 文件来配置 SQL 语句,提供了灵活的配置方式。
  • 支持存储过程:MyBatis 可以调用数据库的存储过程,并可以处理复杂的返回类型。
  • 支持动态 SQL:MyBatis 提供了动态 SQL 功能,可以根据条件动态构建 SQL 语句。
  • 易于上手:MyBatis 的学习曲线相对平缓,对于初学者来说比较容易上手。
  • 与 Spring 集成:MyBatis 可以与 Spring 框架无缝集成,利用 Spring 的依赖注入特性来管理 MyBatis 的 SqlSession。

3、MyBatis 主要的类和接口


MyBatis 是一个支持普通 SQL 查询、存储过程和高级映射的持久层框架。在 MyBatis 中,有一些核心的类和接口,它们构成了框架的基础。以下是一些主要的类和接口:

  • SqlSession

    • 这是 MyBatis 中最重要的接口之一,它提供了执行映射 SQL 语句的能力。通过这个接口,你可以直接与数据库进行交互。
  • SqlSessionFactory

    • 负责创建 SqlSession 实例。SqlSessionFactory 是线程安全的,通常由 MyBatis 的配置信息创建,并且可以在应用程序中共享。
  • SqlSessionFactoryBuilder

    • 负责构建 SqlSessionFactory。它可以使用 XML 配置文件或纯 Java 配置来构建。
  • Mapper

    • 这是一个接口,通常与 SQL 映射文件(XML)或注解一起使用。Mapper 接口定义了应用程序中需要执行的数据库操作。
  • MapperFactory

    • 负责创建 Mapper 接口的代理实例。
  • Configuration

    • 包含了 MyBatis 的全局配置信息,例如设置、类型别名、类型处理器、映射器等。
  • TypeHandler

    • 用于处理 JDBC 和 Java 数据类型之间的转换。MyBatis 提供了许多内置的 TypeHandler,但也允许开发者自定义。
  • ParameterHandler

    • 负责将 SQL 语句中的参数与 Java 对象的属性值绑定。
  • ResultSetHandler

    • 负责从 JDBC 的 ResultSet 中提取数据并转换为 Java 对象。
  • StatementHandler

    • 负责创建 JDBC Statement 或 PreparedStatement,以及设置 SQL 语句的参数和获取查询结果。
  • Executor

    • 负责执行 SQL 语句,可以是简单的执行器、批量执行执行器或事务执行器。
  • Transaction

    • 负责管理数据库事务。
  • DataSource

    • 数据源,用于获取数据库连接。
  • Plugin

    • MyBatis 允许开发者通过插件来扩展或修改 MyBatis 的行为。Plugin 接口定义了插件需要实现的方法。
  • Interceptor

    • 拦截器,用于拦截 MyBatis 的执行流程,如可以用于实现审计、性能统计等功能。
  • ObjectFactory

    • 用于创建 MyBatis 需要的对象实例。
  • ObjectWrapper

    • 用于封装对象,提供 get 和 set 方法。
  • ReflectorFactory

    • 负责创建 Reflector 对象,Reflector 用于处理反射操作。
  • Settings

    • 全局配置的存储类,包含了 MyBatis 的所有设置。
  • PerpetualCache

    • 永久缓存,用于缓存经常使用的对象,以提高性能。

这些类和接口共同构成了 MyBatis 的核心框架,使得开发者能够以面向对象的方式来处理数据库操作。在实际使用中,开发者通常只需要关注 SqlSession 和 Mapper 接口,而其他组件则由 MyBatis 自动处理。


二、 MyBatis-Plus


1、🤔 什么是 MyBatis-Plus?

MyBatis-Plus(简称 MP)是一个在 MyBatis 基础上增强的工具,它保留了 MyBatis 的所有特性,同时加入了更多便捷功能,旨在简化开发和提高效率。


2、✨ MyBatis-Plus 的超能力

  • 无侵入性:它只是在 MyBatis 上做了增强,不会改变你现有的工程结构。
  • 自动 CRUD:自动注入基本的 CURD 操作,减少模板代码。
  • 强大的条件构造器:支持 Lambda 表达式,写出的 SQL 更安全、更简洁。
  • 主键自动生成:支持多种主键生成策略,包括分布式唯一 ID。
  • 代码生成器:快速生成 CRUD 代码,提升开发速度。
  • 分页插件:轻松实现物理分页,减轻数据库压力。

支持数据库

能使用 MyBatis 进行 CRUD, 并且支持标准 SQL 的数据库。

  • MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb,informix,TDengine,redshift

Github地址:
https://github.com/baomidou/mybatis-plus


3、💻 安装 MyBatis-Plus

首先,你需要在项目的 pom.xml 文件中添加 MyBatis-Plus 的依赖:


<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.4</version>
</dependency>

4、📝 快速上手

(1)、配置数据源

application.properties 中配置数据库连接:

properties

spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

(2)、创建实体类

创建一个对应数据库表的实体类 User

import com.baomidou.mybatisplus.annotation.TableName;@TableName("user")
public class User {private Long id;private String name;private Integer age;// Getters and Setters
}

(3)、创建 Mapper 接口

定义一个 Mapper 接口:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface UserMapper extends BaseMapper<User> {// 可以添加自定义方法
}

(4)、编写 Service 层
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;public class UserService extends ServiceImpl<UserMapper, User> {// 可以添加自定义业务方法
}

(5)、使用 MyBatis-Plus 进行 CRUD 操作
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> {// 插入数据public void createUser(String name, Integer age) {User user = new User();user.setName(name);user.setAge(age);save(user);}//查询数据public User getUserById(Long id) {return getById(id);}//更新数据public void updateUser(User user) {User user = new User();user.setId(id);user.setName(name);user.setAge(age);updateById(user);}public void deleteUser(Long id) {removeById(id);}
}

🔮 结语

MyBatis-Plus 的强大之处远不止这些,它还有更多高级功能等待你去探索,比如逻辑删除、乐观锁、性能分析等。在下一篇文章中,我们将深入探讨这些高级特性,敬请期待!

如果你对 MyBatis-Plus 有任何疑问或想法,欢迎在评论区留言,我们一起讨论。记住,编程不只是技术,更是一种艺术!


http://www.mrgr.cn/news/45629.html

相关文章:

  • 【题解】【模拟】—— [NOIP2013 普及组] 表达式求值
  • HTTP协议:连接世界的语言 —— Python中的实践与探索
  • 【数学二】中值定理、不等式与零点问题-中值定理-费马定理、罗尔定理、拉格朗日中值定理、柯西中值定理、泰勒公式、麦克劳林公式
  • 渐开线起始圆和基圆之间有约束关系吗?
  • Java 插入排序
  • 全都燃起来了!黄金周车市销量成绩出炉
  • 浅色系统B端管理系统标配,现在也卷起了可视化,挡不住呀
  • 【图论】迪杰特斯拉算法
  • 在 JavaScript 中使用 window 对象来刷新页面
  • DFT ATPG提升coverage的方法
  • “晴天霹雳”:刚刚,2024诺贝尔物理学奖颁给AI教父!
  • ESP8266使用AT指令完成MQTT功能
  • Java实现微信native支付
  • 钩子函数和回调函数
  • `pandas` 库提供了一个非常方便的方法将 DataFrame 转换为字典
  • JAVA开源项目 新生报到网站 计算机毕业设计
  • STM32-HAL库 驱动DS18B20温度传感器 -- 2024.10.8
  • Java的锁机制详解
  • 图像人脸与视频人脸匹配度检测
  • boost之第三方线程池