mybatis plus条件构造器queryWrapper、updateWrapper

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日

相关文章

  • Win10系统资源管理器不明原因崩溃怎么办 Win10资源管理器频繁崩溃的解决办法

    Win10系统资源管理器不明原因崩溃怎么办 Win10系统资源管理器是我们经常使用的一个功能,但是有时候它会出现不明原因的崩溃现象,这时候我们该怎么办呢?本文将为大家提供一些有效的解决方法。 解决步骤 步骤一:查看系统更新 有时候Win10系统资源管理器崩溃的原因是因为系统未及时更新。因此,首先我们需要检查系统更新是否完全。 点击“开始”菜单,在搜索栏中输入…

    other 2023年6月27日
    00
  • ServerVariables集合检索预定的环境变量

    ServerVariables集合是ASP.NET中一个重要的内置变量集合,它包含所有可用的服务器端环境变量,包括用户信息、服务器信息、浏览器和客户端的信息等。我们可以通过检索ServerVariables集合中的键值对,获取一些预定义的环境变量。 检索 ServerVariables 集合预定环境变量的方法 以下是检索预定环境变量的步骤: 步骤 1 对于.…

    other 2023年6月27日
    00
  • 剖析Linux系统中的文件系统路径

    关于“剖析Linux系统中的文件系统路径”的攻略,我将从以下几个方面展开: 了解Linux文件系统的基本结构 查看当前目录和完整路径 掌握基本的文件系统路径操作命令 通过示例说明不同文件系统路径的使用 具体来说,我们需要做如下操作: 1. 了解Linux文件系统的基本结构 文件系统是 Linux 操作系统的重要组成部分,负责管理系统中的文件。在 Linux …

    other 2023年6月27日
    00
  • Golang初始化MySQL数据库方法浅析

    Golang初始化MySQL数据库方法浅析 在 Golang 开发中,MySQL 数据库广泛使用,因此如何初始化 MySQL 数据库是初学者需要掌握的重要知识点之一。本文将介绍两种常见的初始化 MySQL 数据库的方法。 方法一:使用 Golang 官方库实现 Golang 官方库提供了 database/sql 和 sql 等库,可以使用这些库来连接和操作…

    other 2023年6月20日
    00
  • iPhone11屏幕严重偏黄怎么办 屏幕偏黄亮度不足解决方法

    iPhone11屏幕严重偏黄怎么办 如果你的iPhone11屏幕呈现严重的偏黄现象,不仅影响了手机的使用体验,而且还可能让你感到担忧。不用担心,下面我将提供两种方法帮你解决这个问题。 方法一:检查Night Shift模式 很多用户在使用iPhone时,会选择在晚上开启Night Shift模式,这种模式将屏幕颜色逐渐变为暖色调,以减少可能导致眼疲劳的蓝光辐…

    other 2023年6月27日
    00
  • 合金装备5幻痛开发小组怎么升级_开发小组升级方法推荐

    合金装备5幻痛开发小组升级攻略 1. 理解开发小组升级系统 在《合金装备5幻痛》中,开发小组升级系统是一个重要的机制,它允许玩家通过提升开发小组的等级来解锁更多的武器、装备和设施。下面是一些升级开发小组的方法和示例说明。 2. 完成任务和侧任务 完成主线任务和侧任务是升级开发小组的主要途径之一。通过完成任务,你可以获得资源和GMP(游戏中的货币),这些资源可…

    other 2023年7月27日
    00
  • 【解决方案汇总】qq匿名悄悄话怎么查看是谁发的?

    【解决方案汇总】qq匿名悄悄话怎么查看是谁发的? 在QQ中,匿名悄悄话允许用户向其他人发送匿名消息,而这就会引起一系列问题,比如如何查看是谁向我发送了这条匿名消息等。事实上,有多种方法可以解决这个问题,下面将介绍一些常用的解决方案。 方法一:通过历史消息查看 如果你曾经与发出匿名消息的人有过聊天记录,那么你可以通过查看聊天记录来了解匿名消息的来源。具体步骤如…

    other 2023年6月26日
    00
  • JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】

    下面是详细讲解“JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】”的完整攻略。 1. 父子表 父子表是指在一张表格中,某些行可以展开后显示子表格。Bootstrap table提供了父子表的插件,使用起来非常方便。 1.1 配置插件 要使用父子表的插件,首先要配置插件。可以使用data 属性来设置子表的数据和表头信息,使用da…

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