MyBatis-Plus复杂条件查询---Example

2023-11-11

概要

tk.mybatis.mapper.entity.Example 是 MyBatis-Plus 提供的一个用于构建查询条件的工具类。它可以让用户以更简洁和灵活的方式构建数据库查询条件,避免手动编写复杂的 SQL 语句。Example 类是基于 MyBatis 通用 Mapper 和通用分页插件的一部分,旨在简化数据库操作。使用 Example 类进行复杂条件查询非常方便,可以根据实际需求构建各种复杂的查询条件。

Example 类的使用

1、导入依赖

在使用 Example 类之前,需要确保您的项目中已经引入了 MyBatis-Plus 的依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.x.x</version> <!-- 使用合适的版本 -->
</dependency>

2、创建 Example 对象

使用 Example 类的构造方法创建一个查询条件示例对象,构造方法接受一个实体类的 Class 对象作为参数

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import tk.mybatis.mapper.entity.Example;

Example example = new Example(User.class);//User为用于查询的实体类

3、设置查询条件

通过 example.createCriteria() 方法获取一个条件对象,然后使用不同的条件方法来设置查询条件。条件方法以 and 开头,根据具体需求选择不同的方法来设置条件

example.createCriteria()
       .andEqualTo("age", 25)
       .andGreaterThan("salary", 50000);

4、设置排序规则

使用 example.setOrderByClause(“column1 DESC, column2 ASC”) 方法来设置排序规则。

example.setOrderByClause("age DESC, salary ASC");

5、执行查询

通过调用 selectByExample(example) 方法来执行查询,该方法通常是 Mapper 接口中继承自 BaseMapper 的方法

List<User> userList = userMapper.selectByExample(example);

6、分页查询

配合 MyBatis-Plus 提供的分页插件,您可以将 Example 对象与分页插件一起使用,以实现分页查询

Page<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, example);
List<User> userList = userPage.getRecords(); // 分页查询结果

总结

通过使用 tk.mybatis.mapper.entity.Example,可以以更简洁的方式生成复杂的查询条件,提高代码的可读性和维护性。使用 Example 可以更方便地进行数据库操作,无需手动编写复杂的 SQL 语句,使开发更加高效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyBatis-Plus复杂条件查询---Example 的相关文章

随机推荐

  • 封装微信小程序隐私信息授权

    隐私 代码 html modal 组件再后面封装有提供
  • 深入理解Java国际化

    假设我们正在开发一个支持多国语言的Web应用程序 要求系统能够根据客户端的系统的语言类型返回对应的界面 英文的操作系统返回英文界面 而中文的操作系统则返回中文界面 这便是典型的i18n国际化问题 对于有国际化要求的应用系统 我们不能简单地采
  • [深度学习] 名词解释--正则化

    正则化 花书的定义 凡是可以减少泛化误差 过拟合 而不是减少训练误差的方法 都叫正则化方法 目的 拟合训练数据 防止模型过拟合 通常使用L2正则化 用各种方法规范模型参数的方法 什么是神经网络的过拟合 在最小化损失函数的前提下 最优的一组w
  • proteus中继电器怎么找_(踩坑记录)——数电仿真proteus/ewb

    我不管 从今天开始我要隐姓埋名的在知乎记录各种学习和生活上遇到的坎了 因为实在不知道记录在哪里方便查找 为什么要记录呢 还不是我脑子不好 彻底卸载proteus 正常卸载 删除注册表 win R输入以下 数电仿真实验 1 一 逻辑门 74L
  • 冷月手撕408之操作系统(5)-进程概述

    操作系统的进程概述主要是介绍了进程的概念 进程的组成 进程实体 进程的特征 进程的五状态模型 进程控制 其中重点掌握PCB 五状态模型及其状态转换 主要的重点冷月做出了标识 知识点如下图 pdf版或xmind源文件请关注公众号 学长冷月 回
  • 【算法】排序(sort排序函数和冒泡、选择、插入、快速排序)

    记录目前学到的4种排序 sort函数排序 冒泡排序 选择排序 插入排序 sort函数排序 1 对数组进行排序 要加函数头 include
  • ChatGPT:我的生活工作“解忧公主”

    1 概述 在这个充满活力与挑战的时代 我们的生活和工作总是充满了各种问题 幸运的是 有了 ChatGPT 这位 解忧公主 我们能轻松应对这些问题 高效地度过每一天 本文将分享 ChatGPT 如何成为我们生活工作中的万能钥匙 我们将从以下几
  • python3的面向对象

    python的面向对象也很强大 支持多继承 php和java都是单继承 但都可以实现其他接口 self 类似java的this test py usr bin python3 基类 class Base 父类属性 name age 60 定
  • Windows下fopen,fclose

    Fopen fclose 在头文件 include
  • KiCad使用笔记(05)-PCB绘制

    文章目录 绘图过程 导入网表 绘制PCB边框 摆放元件 添加导线 交互式布线 添加铺铜 放置过孔 检测PCB 整理丝印 生成钻孔文件 生成光绘文件 相关视频教程 绘图过程 导入网表 绘制PCB边框 PCB边框放置在Edge Cuts层 可以
  • Java课题笔记~ SpringBoot简介

    1 入门案例 问题导入 SpringMVC的HelloWord程序大家还记得吗 SpringBoot是由Pivotal团队提供的全新框架 其设计目的是用来简化Spring应用的初始搭建以及开发过程 原生开发SpringMVC程序过程 1 1
  • useEffect实现数据请求刷新的几种方法

    请求数据入参变化的情况下重新请求数据的情景下useEffect的几种写法 1 函数在useEffect里面 const query useEffect gt function fetchData return https hn algoli
  • Redis-大key解决策略

    大key的定义 首先大key不是key很大而是key对应的value值很大 一般而言如果String类型值大于10KB Hash Set Zset List类型的元素的个数大于5000个都可以称之为大key 大key的危害 客户端超时等待
  • 通过示例学习 PyTorch

    通过示例学习 PyTorch 本教程通过独立的示例介绍 PyTorch 的基本概念 PyTorch 的核心是提供两个主要功能 n 维张量 类似于 numpy 但可以在 GPU 上运行 自动区分以构建和训练神经网络 我们将使用完全连接的 Re
  • 自动化测试的一些面试题分享

    一 Web自动化测试 1 Selenium中hidden或者是display none的元素是否可以定位到 不能 可以写JavaScript将标签中的hidden先改为0 再定位元素 2 Selenium中如何保证操作元素的成功率 也就是说
  • sqrt函数实现之卡马克方法

    sqrt函数的实现主要有三种方式 二分法 牛顿法 卡马克方法 卡马克方法 这里主要介绍高效的卡马克方法 卡马克方法起源于 雷神之锤III竞技场 中使用的平方根倒数速算法 下列代码是平方根倒数速算法在 雷神之锤III竞技场 源代码中的应用实例
  • HashSet中存储复杂类型对象

    这个话题还是从一个有问题的代码中引申出来的 原代码如下 import java util class TreeSetTest public static void main String args HashSet hs new HashSe
  • java 内存偏移量_如何计算静态变量的内存地址相对其Class对象内存地址的偏移量呢...

    我在一篇文章中看到这么一段话 我想验证一下 对于HotSpot VM的对象模型 静态字段的 偏移量 就是 JDK 6或之前 相对该类对应的InstanceKlass 实际上是包装InstanceKlass的klassOopDesc 对象起始
  • 关于32单片机时钟使能问题

    事实上 对于32单片机也好 51单片机也好 对于寄存器的操作 都是要进行使能时钟的 具体原因可以百度一下 只不过 51单片机就一个时钟系统 默认所有寄存器都是处于 开 状态 这样就加大了它的功耗 而32单片机寄存器很多 就必须 给每一组寄存
  • MyBatis-Plus复杂条件查询---Example

    目录 概要 Example 类的使用 1 导入依赖 2 创建 Example 对象 3 设置查询条件 4 设置排序规则 5 执行查询 6 分页查询 总结 概要 tk mybatis mapper entity Example 是 MyBat