Java MyBatis实战:QueryWrapper中的and和or拼接技巧

哈喽,大家好,我是木头左!

一、引言

在Java Web开发中,MyBatis是一个非常流行的持久层框架。它通过XML或注解的方式将Java对象与数据库表进行映射,从而实现数据的增删改查操作。在使用MyBatis的过程中,经常会遇到需要拼接复杂查询条件的场景,这时候就需要使用到QueryWrapper这个强大的工具类。本文将详细介绍如何在MyBatis的QueryWrapper中使用and和or进行条件拼接,帮助大家更好地应对实际项目中的各种需求。

二、QueryWrapper简介

QueryWrapper是MyBatis提供的一个用于构建查询条件的类,它可以方便地实现各种复杂的查询条件组合。QueryWrapper提供了丰富的方法,如eq(等于)、ne(不等于)、like(模糊查询)、between(区间查询)等,可以满足各种查询需求。同时,QueryWrapper还支持and和or两种逻辑运算符,可以帮助轻松实现多条件组合查询。

三、and运算符的使用

1. and运算符的基本用法

在QueryWrapper中,and运算符用于连接两个或多个查询条件,表示这些条件都需要满足。例如,想要查询年龄大于18岁且性别为男的所有用户,可以使用如下代码:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 18).eq("gender", "male");

这里,gt("age", 18)表示年龄大于18岁,eq("gender", "male")表示性别为男。使用and运算符将这两个条件连接起来,表示同时满足这两个条件。

2. and运算符链式调用

QueryWrapper支持链式调用,可以将多个查询条件连接起来,使代码更加简洁。例如,想要查询年龄在18到30岁之间、性别为女的所有用户,可以使用如下代码:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18).lt("age", 30).eq("gender", "female");

这里,ge("age", 18)表示年龄大于等于18岁,lt("age", 30)表示年龄小于等于30岁。使用and运算符将这三个条件连接起来,表示同时满足这三个条件。

3. and运算符嵌套使用

有时候,需要在一个查询条件中嵌套另一个查询条件,这时候就可以使用and运算符。例如,想要查询姓名为张三且年龄在25到35岁之间的所有用户,可以使用如下代码:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三").and(i -> i.ge("age", 25).lt("age", 35));

这里,使用了lambda表达式来实现嵌套的and条件。首先使用eq方法设置姓名为张三的条件,然后使用and方法连接一个匿名内部类实现的年龄范围查询条件。注意,这里的and方法是静态方法,可以直接调用。

四、or运算符的使用

or运算符用于连接两个或多个查询条件,表示其中一个条件满足即可。例如,想要查询年龄小于18岁或性别为男的所有用户,可以使用如下代码:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lt("age", 18).or().eq("gender", "male");

这里,使用了两次or方法来实现两个条件的or关系。第一次or方法将年龄小于18岁的条件添加到QueryWrapper中,第二次or方法将性别为男的条件添加到QueryWrapper中。需要注意的是,or方法只能用于非空的集合类型参数,所以在这里将or方法链式调用了两次。如果只有一个非空的集合类型参数,只需要调用一次or方法即可。

五、总结与展望

本文详细介绍了如何在MyBatis的QueryWrapper中使用and和or进行条件拼接,帮助大家更好地应对实际项目中的各种需求。在实际开发中,可能还会遇到其他更复杂的查询条件组合,这时候可以通过阅读MyBatis官方文档或参考其他优秀博客文章来学习更多的技巧和方法。希望本文能对大家有所帮助,祝大家在编程路上越走越远!

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习了解 JSON Schema

在数字时代&#xff0c;数据的快速增长要求开发者掌握有效的管理和验证技术。JSON&#xff08;JavaScript Object Notation&#xff09; 是一种流行的轻量级数据交换格式&#xff0c;在网络编程中有广泛应用。为了应对复杂数据的挑战&#xff0c;JSON Schema 诞生&#xff0c;提…

爱普生SMD3225贴片晶振升级版TSX-3225

爱普生有一款外形尺寸3.2*2.5mm的无源贴片晶振&#xff0c;型号TSX-3225&#xff0c;也是非常直观的能从型号分辨其封装尺寸大小的&#xff0c;被广泛应用于便携式的无线传输设备&#xff0c;同时&#xff0c;这也是一款非常成熟的产品&#xff0c;毕竟SMD3225封装是目前市场主…

功能强大的文本编辑器(绿色版)

UltraEdit 是一套功能强大的文本编辑器&#xff0c;可以编辑文本、十六进制、ASCII 码&#xff0c;完全可以取代记事本。 现在为你分享一个绿色免安装版&#xff0c;请在文末查看该软件的领取方法。 UltraEdit的强大功能 UltraEdit是一款功能强大的文本编辑器&#xff0c;广…

手把手教你安装 Vivado2019.2(附安装包)

一、Vivado 2019.2优点 Vivado 2019.2 作为 Xilinx 公司发布的一款设计套件版本&#xff0c;具有多个显著的优点&#xff0c;以下是对其优点的详细归纳&#xff1a; 集成度高&#xff1a;开发工具丰富并行综合功能灵活的许可证策略用户友好的界面强大的仿真和验证功能丰富的文…

数据结构与算法题目集(中文) 6-3 求链表的表长

该代码使用循环遍历链表来计算链表的长度。代码首先定义了一个整数变量i用于计数&#xff0c;并初始化为0。然后进入一个while循环&#xff0c;条件为链表L非空。在循环中&#xff0c;通过L L->Next来遍历链表中的每一个节点&#xff0c;并将计数变量i递增。最终返回计数变…

聚鼎科技:现在的装饰画做起来难吗

在当代&#xff0c;装饰画作为一种体现个人品味和审美情趣的方式&#xff0c;已经广泛应用于各种室内空间。不少人会产生这样的疑问&#xff1a;在现代化技术和材料的支持下&#xff0c;制作一幅装饰画是变得容易了&#xff0c;还是依旧充满挑战? 现代科技的确为装饰画的制作带…

LLM定制的四个层次

LLM(Large Language Models)代表了一种提高生产力的创新方法。他们能够简化各种任务&#xff0c;显著提高整体效率。从提示工程到Agents可以分为四个层次。 Level-1: Prompt engineering Prompt是简明的输入文本&#xff0c;用作查询或指令&#xff0c;引导语言模型产生所需输…

用函数指针求a和b中的大者

指针变量也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数入口地址就称为函数的指针。可以用一个指针变量指向函数&#xff0c;然后通过该指针变量调用此函数。 先按一般方法编写程序&#xff1a; 可以用一个指针变量指向max函数&#xff0c;然后通过该指…

PHP短链接短网址生成源码

下载地址&#xff1a;PHP短链接短网址生成源码 V3.0(11月14日更新) 1.更换用户中心模板 2.首页可以更换模板&#xff08;暂时只有俩套&#xff09; 3.增加首页背景更换 4.logo可以在后台设置 5.更换后台模板 6.优化访问统计功能 7.删除了几个没什么用的东西 8.数据表已支持全…

【Vue】项目创建目录初始化

文章目录 vue-cli 建项目调整初始化目录结构 vue-cli 建项目 1.安装脚手架 (已安装) npm i vue/cli -g2.创建项目 vue create hm-shopping选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) > Manually sel…

日本麻将基本规则和基本术语以及役种讲解

基本规则 无役无法和牌 “役”是特定牌的组合&#xff0c;不满足任何役是无法和牌的,关于役在后面会进行深入的讲解 和牌条件 满足和牌牌型有役荣和时不能振听 和牌牌型 ABC*xAAA*yDD,一般的和牌牌型,x组顺子和y组刻子加上一组对子(xy4)AA*7,特殊的和牌牌型,是一种役,名叫…

SpringSecurity入门(四)

18、权限管理/授权 18.1、针对url配置 配置SecurityConfig package com.wanqi.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.bu…

面试官问:百万QPS秒杀系统该如何设计

今天就带大家体系化的梳理下&#xff0c;大厂级高并发的秒杀系统该如何设计。 带大家跳出程序员思维&#xff0c;从架构师的视角分析下&#xff0c;大厂级、高并发的秒杀系统该如何设计&#xff1f; 秒杀系统的三个问题 问题一&#xff1a;为什么需要秒杀系统&#xff1f; 简…

CVE-2023-37569(未授权任意文件上传+弱口令爆破)

靶场简介 Online Piggery Management System v1.0 - 存在未授权的文件上传漏洞&#xff0c;登陆界面弱口令爆破 进入靶场 猜测弱口令admin/admin&#xff0c;错误&#xff0c;进行账号密码爆破 得到账号密码 admin/password 登陆进入&#xff0c;找到一处文件上传位置 上传…

SpringBoot快速部署(2)—不使用docker的常规方法

一、软件下载和部署前准备 安装软件 获取软件安装包 然后上传到服务器的 /tmp 目录下。 软件&#xff1a;nginx、jdk、mysql 下载 X-shell 和 Xftp 注意&#xff1a;这个页面下载安装的才可以免费使用。家庭/学校免费 - NetSarang Website 安装jdk 1.8 tar -zxvf /tmp/jdk-…

弱智吧”,人类抵御AI的最后防线

“写遗嘱的时候错过了deadline怎么办&#xff1f;” “怀念过去是不是在时间的长河里刻舟求剑&#xff1f;” “英语听力考试总是听到两个人在广播里唠嗑&#xff0c;怎么把那两个干扰我做题的人赶走&#xff1f;” 以上这些饱含哲学但好像又莫名其妙的问题&#xff0c;出自…

简易概况广告变现

广告变现是指媒体或平台通过向用户展示广告主的广告&#xff0c;从而获得收入的过程。 广告变现就像是一个店主&#xff0c;他需要一个吸引人的店面&#xff0c;提供优质的内容和服务&#xff0c;然后在店里摆放一些别人的商品或服务&#xff0c;每当有客人看了或买了这些商品或…

计算机SCI期刊,中科院3区,IF=3.4,难度不大,无预警风险

一、期刊名称 Automated Software Engineering 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;计算机科学 影响因子&#xff1a;3.4 中科院分区&#xff1a;3区 三、期刊征稿范围 自动化软件工程是一份档案&#xff0c;同行评审的期刊&#xff0c;发表研…

Win10系统自带输入法英文变大的问题

现在习惯使用Windows自带的五笔输入法了&#xff0c;但一直以来总会遇到输入时突然英文字母变大了&#xff0c;相隔空间也变大了的情况。 &#xff41;&#xff53;&#xff44;&#xff46;&#xff47;&#xff48;&#xff4b;&#xff4c; asdfghkl 后来知道这是输入法变…

汇凯金业:上海黄金交易所简介

上海黄金交易所(SGE)是中国唯一合法进行黄金交易的国家级市场&#xff0c;遵循公开、公平、公正和诚实信用的原则&#xff0c;在中国人民银行的领导下&#xff0c;于2002年10月30日正式开业。交易所不以盈利为目的&#xff0c;实行自律性管理。 组织形式及会员 交易所实行会员…