MybatisPlus核心功能

文章目录

  • 一、前言
  • 二、核心功能
    • 2.1、条件构造器
      • 2.1.1、基础查询条件
      • 2.1.2、复杂查询条件
      • 2.1.3、动态查询条件
      • 2.1.4、查询结果排序
      • 2.1.5、执行查询
    • 2.2、主键策略
      • 2.2.1、自增主键策略
      • 2.2.2、UUID 主键策略
      • 2.2.3、雪花算法主键策略
      • 2.2.4、自定义 ID 生成策略
  • 三、总结

一、前言

MyBatis-Plus 是一个基于 MyBatis 的增强工具,提供了一系列强大的功能,能够极大地简化 Java 持久层的开发。本文将深入探讨 MyBatis-Plus 的核心功能,包括条件构造器、主键策略以及自定义 ID 生成器。

二、核心功能

2.1、条件构造器

条件构造器能够让开发者以更优雅的方式构建复杂的查询条件,从而提升查询的灵活性和可读性。

2.1.1、基础查询条件

条件构造器的基本概念是创建一个 QueryWrapper 对象,然后使用其方法来逐步添加查询条件。我们以一个 User 表为例来说明:

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 25).like("name", "John");

上述代码中,我们创建了一个 QueryWrapper 对象,并使用 eqlike 方法分别添加了等于和模糊查询的条件。

2.1.2、复杂查询条件

条件构造器支持各种复杂的查询条件组合,如 BETWEEN、IN、OR 等。以下是一些示例:

queryWrapper.between("age", 20, 30).in("department", "IT", "Finance").or().like("name", "Smith");

在上述代码中,我们使用 between 方法添加了一个范围查询条件,使用 in 方法添加了一个多选项查询条件,使用 or 方法创建了一个 OR 条件组。

2.1.3、动态查询条件

条件构造器还支持根据条件是否成立来动态添加查询条件,这在动态查询中非常有用。以下是一个示例:

if (StringUtils.isNotEmpty(keyword)) {queryWrapper.like("name", keyword);
}
if (minAge != null && maxAge != null) {queryWrapper.between("age", minAge, maxAge);
}

在上述代码中,我们根据不同的情况动态添加了查询条件,使得查询更加灵活。

2.1.4、查询结果排序

条件构造器还支持添加排序条件,使得查询结果按照指定的字段进行排序:

queryWrapper.orderByAsc("age").orderByDesc("salary");

2.1.5、执行查询

最后,我们使用 QueryWrapper 对象执行查询:

List<User> userList = userMapper.selectList(queryWrapper);

2.2、主键策略

2.2.1、自增主键策略

自增主键策略是最常见的主键生成策略,适用于大多数数据库。通过自增,数据库会自动为每个插入的记录生成唯一的主键值。在 MyBatis-Plus 中,使用 IdType.AUTO 可以指定自增主键策略。

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;public class User {@TableId(type = IdType.AUTO) // 自增主键private Long id;// 其他字段...
}

2.2.2、UUID 主键策略

在这里插入图片描述

UUID 主键策略通过生成 UUID(通用唯一标识符)来确保主键的全局唯一性。这对于分布式系统中的数据一致性非常重要。在 MyBatis-Plus 中,使用 IdType.ASSIGN_UUID 可以指定 UUID 主键策略。

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;public class Product {@TableId(type = IdType.ASSIGN_UUID) // UUID 主键private String id;// 其他字段...
}

2.2.3、雪花算法主键策略

雪花算法主键策略是一种高效的分布式唯一 ID 生成算法,能够在分布式环境下生成有序的、唯一的 ID。在 MyBatis-Plus 中,使用 IdType.ASSIGN_ID 可以指定雪花算法主键策略。

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;public class Order {@TableId(type = IdType.ASSIGN_ID) // 雪花算法主键private Long id;// 其他字段...
}

2.2.4、自定义 ID 生成策略

如果以上内置的主键策略不满足需求,你还可以使用自定义的 ID 生成策略。首先,你需要实现 IdentifierGenerator 接口,然后在实体类中使用 IdType.INPUT 指定使用自定义生成器。

@Component
public class CustomIdGenerator implements IdentifierGenerator {@Overridepublic Long nextId(Object entity) {// 自定义 ID 生成逻辑// 返回生成的 ID}
}
public class CustomEntity {@TableId(type = IdType.INPUT, inputType = CustomIdGenerator.class) // 自定义 ID 生成策略private Long id;// 其他字段...
}

三、总结

MyBatis-Plus 不仅在 CRUD 操作上提供了极大的便利,还提供了更高级的功能,如条件构造器、主键策略和自定义 ID 生成器。这些功能的集成使得持久层操作更加简单而灵活,让开发者能够专注于业务逻辑而不用过多关注 SQL 细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/110454.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vscode画流程图

1.下载插件 Draw.id Integration 2.桌面新建文件&#xff0c;后缀名改为XXX.drawio 在vscode打开此文件 &#xff0c;就可以进行绘制流程图啦

智能工厂移动式作业轻薄加固三防平板数据采集终端

在这个高度自动化和数字化的环境中&#xff0c;数据采集变得尤为重要。为了满足这个需求&#xff0c;工业三防平板数据采集终端应运而生。工业三防平板数据采集终端采用了轻量级高强度镁合金材质&#xff0c;这使得它在保持轻薄的同时具有更强的坚固性。这种材质还具有耐磨防损…

Ubuntu20.04配置mysql配置主从复制

ubuntu20.04&#xff1a;mysql主库 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 修改完毕重启 sudo service mysql stop sudo service mysql start主库mysqld.cnf配置 [mysqld] ... # bind-address>->--- 127.0.0.1 # 注释掉&#xff0c;允许外部连接 # mysqlx-b…

【Android】TextView适配文本大小并保证中英文内容均在指定的UI 组件内部

问题 现在有一个需求&#xff0c;在中文环境下textView没有超过底层的组件限制&#xff0c;但是一切换到英文环境就超出了&#xff0c;这个如何解决呢&#xff1f;有啥例子吗&#xff1f; 就像这样子的。 解决 全部代码如下&#xff1a; <?xml version"1.0"…

rust交叉编译 在mac下编译linux和windows

系统版本macbook proVentura 13.5linux ubuntu22.04.3 LTS/18.04.6 LTSwindowswindows 10 专业版 20H2mac下rustc --versionrustc 1.74.0-nightly (58eefc33a 2023-08-24)查看当前系统支持的交叉编译指定系统版本列表 rustup target list如果已经安装这里会显示(installed)。…

Elasticsearch中倒排索引、分词器、DSL语法使用介绍

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

Spring Cloud Nacos 和 Eureka区别,包含实战代码

目录 一、Spring Cloud Eureka详解二、Spring Cloud Nacos详解三、Spring Cloud Nacos和Eureka区别 Spring Cloud Nacos 和 Spring Cloud Eureka 都是 Spring Cloud 微服务框架中的服务注册和发现组件&#xff0c;用于帮助开发者轻松地构建和管理微服务应用。它们之间的主要区别…

pytestx容器化执行引擎

系统架构 前端、后端、pytest均以Docker容器运行服务&#xff0c;单独的容器化执行引擎&#xff0c;项目环境隔离&#xff0c;即用即取&#xff0c;用完即齐&#xff0c;简单&#xff0c;高效。 前端容器&#xff1a;页面交互&#xff0c;请求后端&#xff0c;展示HTML报告 后…

RHCE——十一、NFS服务器

NFS服务器 一、简介1、NFS背景介绍2、生产应用场景 二、NFS工作原理1、示例图2、流程 三、NFS的使用1、安装2、配置文件3、主配置文件分析3.1 实验1 4、NFS账户映射4.1 实验24.2 实验3 四、autofs自动挂载服务1、产生原因2、安装3、配置文件分析4、实验45、实验5 一、简介 1、…

归一化的作用,sklearn 安装

目录 归一化的作用&#xff1a; 应用场景说明 sklearn 准备工作 sklearn 安装 sklearn 上手 线性回归实战 归一化的作用&#xff1a; 归一化后加快了梯度下降求最优解的速度; 归一化有可能提高精度(如KNN) 应用场景说明 1&#xff09;概率模型不需要归一化&#xff…

FusionAD:用于自动驾驶预测和规划任务的多模态融合

论文背景 自动驾驶&#xff08;AD&#xff09;任务通常分为感知、预测和规划。在传统范式中&#xff0c;AD中的每个学习模块分别使用自己的主干&#xff0c;独立地学习任务。 以前&#xff0c;基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹…

基于Spring实现博客项目

访问地址:用户登录 代码获取:基于Spring实现博客项目: Spring项目写博客项目 一.项目开发 1.项目开发阶段 需求评审,需求分析项目设计(接口设计,DB设计等&#xff0c;比较大的需求,需要设计流程图&#xff0c;用例图,UML, model中的字段)开发&#xff0b;自测提测(提交测试…

深入浅出SSD:固态存储核心技术、原理与实战(文末赠书)

名字&#xff1a;阿玥的小东东 学习&#xff1a;Python、C/C 主页链接&#xff1a;阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 内容简介 作者简介 使用Python做一个计算器 本期赠书 近年来国家大力支持半导体行业&#xff0…

计算机视觉与人工智能在医美人脸皮肤诊断方面的应用

一、人脸皮肤诊断方法 近年来&#xff0c;随着计算机技术和人工智能的不断发展&#xff0c;中医领域开始逐渐探索利用这些先进技术来辅助面诊和诊断。在皮肤望诊方面&#xff0c;也出现了一些现代研究&#xff0c;尝试通过图像分析技术和人工智能算法来客观化地获取皮肤相关的…

循环购商业模式:提升复购率与用户价值的创新策略-微三云门门

亲爱的企业家们&#xff0c;我是微三云门门&#xff01;今天&#xff0c;我将为大家详细介绍一种颠覆性的商业模式&#xff1a;循环购商业模式。这个模式不仅可以帮助企业提升平台的复购率&#xff0c;还能够拉新用户并提升用户的消费率。让我们一起深入了解这个引人注目的商业…

Ubuntu 下安装Qt5.12.12无法输入中文解决方法

Ubuntu 下安装Qt5.12.12无法输入中文解决方法 一&#xff0c;环境&#xff1a; &#xff08;1&#xff09;VMware Workstation 15 Pro &#xff08;2&#xff09;Ubuntu 20.04 &#xff08;3&#xff09;Qt 5.12.12 64bits &#xff08;4&#xff09;Qt Creator 5.0.2 &#…

Hadoop Yarn 核心调优参数

文章目录 测试集群环境说明Yarn 核心配置参数1. 调度器选择2. ResourceManager 调度器处理线程数量设置3. 是否启用节点功能的自动检测设置4. 是否将逻辑处理器当作物理核心处理器5. 设置物理核心到虚拟核心的转换乘数6. 设置 NodeManager 使用的内存量7. 设置 NodeManager 节点…

ant-vue1.78版a-auto-complete表单自动搜索返回列表中的关键字标红

a-auto-complete表单自动搜索返回列表中的关键字标红 通常在做关键字标红的场景&#xff0c;都是后端返回html结构&#xff0c;前端直接渲染实现&#xff0c;但是如果需要前端处理的话&#xff0c;实现也是很简单的&#xff0c;接下来我直接上应用场景吧 应用场景就是通过关键…

GaussDB技术解读系列:高级压缩之OLTP表压缩

8月16日&#xff0c;第14届中国数据库技术大会&#xff08;DTCC2023&#xff09;在北京国际会议中心顺利举行。在GaussDB“五高两易”核心技术&#xff0c;给世界一个更优选择的专场&#xff0c;华为云数据库GaussDB首席架构师冯柯对华为云GaussDB数据库的高级压缩技术进行了详…

centos7搭建apache作为文件站后,其他人无法访问解决办法

在公司内网的一个虚拟机上搭建了httpsd服务&#xff0c;准备作为内部小伙伴们的文件站&#xff0c;但是搭建好之后发现别的小伙伴是无法访问我机器的。 于是寻找一下原因&#xff0c;排查步骤如下&#xff1a; 1.netstat -lnp 和 ps aux 先看下端口和 服务情况 发现均正常 2.…