mybatis plus条件构造器queryWrapper、updateWrapper

yizhihongxing

Mybatis-Plus是一个增强版的MyBatis,提供了许多实用的功能,QueryWrapper和UpdateWrapper是Mybatis-Plus中的一种条件构造器,能够帮助我们更方便地进行动态SQL查询和更新。

QueryWrapper

基本使用

QueryWrapper用于构造查询条件,我们可以通过它的链式方法设置查询条件。例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username", "admin")
            .ge("age", 18)
            .between("create_time", "2021-01-01", "2021-12-31");
List<User> userList = userMapper.selectList(queryWrapper);

这个例子中我们创建了一个空的QueryWrapper,然后通过eq、ge和between方法设置了查询条件,最后执行selectList方法获取符合条件的用户列表。在这个例子中,我们查询了用户名为admin,年龄大于等于18,创建时间在2021年之内的用户列表。

模糊查询

QueryWrapper支持模糊查询,常用的方式有like、notLike、likeLeft和likeRight。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("username", "jo")
            .notLike("email", "@")
            .likeLeft("phone", "135")
            .likeRight("phone", "666");
List<User> userList = userMapper.selectList(queryWrapper);

以上代码演示了四种不同的模糊查询方式。其中like和notLike分别表示模糊匹配和排除匹配,同时可以设置多个匹配条件。likeLeft和likeRight分别表示左模糊和右模糊匹配,例如例子中我们查询了手机号以135开头,以666结尾的用户列表。

IN查询

在Mybatis中使用IN查询时,需要使用foreach标签来构造。而在Mybatis-Plus中,我们可以直接使用in方法进行IN查询。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.in("id", Arrays.asList(1, 2, 3));
List<User> userList = userMapper.selectList(queryWrapper);

这个例子中我们查询了id为1、2、3的用户列表。如果需要进行子查询,可以使用inSql方法,详细文档请参考官方文档。

ORDER BY、LIMIT

通过orderBy方法可以实现排序查询,如果需要做分页查询,可以使用Page对象和selectPage方法,这点和Mybatis-Plus其他功能类似。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("create_time");
IPage<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, queryWrapper);

这个例子中我们查询了最新的10个用户,按照创建时间倒序。

示例

以上是QueryWrapper的基础用法,下面通过示例演示如何利用QueryWrapper进行更复杂的查询。

示例1:查询年龄在18到30之间,邮编为100000和200000,性别为男的用户列表

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.between("age", 18, 30)
            .in("zipcode", Arrays.asList(100000, 200000))
            .eq("gender", "男");
List<User> userList = userMapper.selectList(queryWrapper);

示例2:查询订单总金额大于10000的用户列表

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.apply("id in (select user_id from orders group by user_id having sum(amount) > 10000)");
List<User> userList = userMapper.selectList(queryWrapper);

以上代码演示了如何利用apply方法实现子查询。在这个示例中,我们查询了所有订单总金额大于10000的用户列表。

UpdateWrapper

UpdateWrapper用于构造更新条件,我们可以通过它的链式方法设置更新条件。例如:

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("username", "admin")
            .set("password", "new_password");
int updateRows = userMapper.update(null, updateWrapper);

这个例子中我们创建了一个空的UpdateWrapper,然后通过eq、set方法设置了更新条件,最后执行update方法更新符合条件的用户记录。在这个例子中,我们更新了用户名为admin的用户密码。

UpdateWrapper与QueryWrapper的用法大同小异,它们都可以通过链式调用设置多个条件。

示例

以下是一个更新用户最近一次登陆IP的示例:

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", 1)
            .set("last_login_ip", "127.0.0.1");
int updateRows = userMapper.update(null, updateWrapper);

以上代码中,我们更新了id为1的用户的最近一次登陆IP。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis plus条件构造器queryWrapper、updateWrapper - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • php+jQuery递归调用POST循环请求示例

    下面我就给你详细讲解一下 “php+jQuery递归调用POST循环请求示例” 的完整攻略。 前言 在讲解 “php+jQuery递归调用POST循环请求示例” 之前,我们先了解一下本文中用到的一些基础概念和工具: PHP: PHP 是 Server端的开发语言,常用于编写 Web 应用程序。本文中PHP的版本为 PHP 7.0; jQuery: jQuer…

    other 2023年6月27日
    00
  • win8系统开机提示“要使用本计算机,用户必须输入用户名和密码”的解决方法

    下面是详细讲解“win8系统开机提示“要使用本计算机,用户必须输入用户名和密码”的解决方法”的完整攻略。 问题描述 在使用Win8系统时,有可能会遇到开机提示“要使用本计算机,用户必须输入用户名和密码”的情况。这一提示会要求用户输入用户名和密码才能够进入系统,但是对于一些用户来说,这些操作显得有些繁琐和麻烦。 解决方法 要解决这个问题,有两种方法可以尝试。 …

    other 2023年6月27日
    00
  • Java后台防止客户端重复请求、提交表单实现原理

    下面我会详细讲解“Java后台防止客户端重复请求、提交表单实现原理”的完整攻略。 什么是防止重复请求 在web开发中,防止客户端重复请求、提交表单是一项常见的安全需求。重复请求会导致服务器接收到相同的请求两次或更多次,浪费服务器资源,甚至会导致数据异常,影响系统正常运行。为了防止这种情况的发生,我们需要在后台服务器端实现一些机制,即防止重复请求机制。 防止重…

    other 2023年6月25日
    00
  • pandasdataframe数据转为list的方法

    以下是关于“pandas DataFrame数据转为list的方法”的完整攻略: pandas简介 pandas是一款开源的数据分析库,可以用于数据清洗、数据处理、数据分析等多种数据操作。pandas提供了两种主要的数据结构:Series和DataFrame。 DataFrame数据转为list的方法 以下是将pandas DataFrame数据转为list…

    other 2023年5月9日
    00
  • MybatisPlus BaseMapper 实现对数据库增删改查源码

    以下是关于MybatisPlus BaseMapper实现对数据库增删改查的完整攻略,包含两个示例说明: 1. 增加数据 public interface UserMapper extends BaseMapper<User> { } // 在Service层中调用 public void addUser(User user) { userMap…

    other 2023年10月19日
    00
  • windows server设置FTP域用户隔离的方法

    下面是详细讲解“Windows Server设置FTP域用户隔离”的攻略: 准备工作 在进行FTP域用户隔离的设置前,需要先做好以下准备工作: 首先需要安装IIS(Web服务器)以及FTP服务器组件。 确保域用户都已创建好,并且分配好每个用户所能访问的文件夹路径。 步骤一:创建FTP站点 在IIS管理器中,右键单击“站点”并选择“添加FTP站点”。 在“添加…

    other 2023年6月27日
    00
  • 苹果系统占用内存太大怎么办 手把手教你清理手机内存方法

    苹果系统占用内存太大的解决方法 苹果系统占用过多内存可能导致手机运行缓慢或出现其他问题。下面是一些手把手教你清理手机内存的方法,帮助你解决这个问题。 方法一:清理无用的应用程序 打开手机主屏幕,找到并点击“设置”图标。 在设置界面中,向下滑动并点击“通用”选项。 在通用设置中,继续向下滑动并点击“iPhone存储空间”。 等待片刻,系统会列出所有已安装应用程…

    other 2023年8月1日
    00
  • 几种查看ubuntu信息的方法

    以下是关于“几种查看Ubuntu信息的方法”的完整攻略,包括基本概念、步骤和两个示例说明。 基本概念 Ubuntu是一种基于Debian的Linux操作系统,它是开源的、免费的,可以在个人电脑、服务器和云平台上运行。在使用Ubuntu时,我们可能需要查看一些系统信息,例如操作系统版本、内核版本、硬件信息等。本文将介绍几种查看Ubuntu信息的方法。 步骤 以…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部