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日

相关文章

  • 神经网络学习——fitnet函数拟合

    以下是关于“神经网络学习——fitnet函数拟合”的完整攻略,过程中包含两个示例。 背景 在神经网络学习中,函数拟合是一项重要的任务。fitnet函数是一种用于函数拟合的神经网络模型。本攻略将介绍如何使用fitnet函数进行函数拟合。 基本原理 使用fitnet函数进行函数拟合我们需要完成以下步骤: 准备数据。 我们需要准一组输入和输出数据,以便训练fitn…

    other 2023年5月9日
    00
  • JS从非数组对象转数组的方法小结

    以下是详细讲解“JS从非数组对象转数组的方法小结”的完整攻略。 问题背景 在 JavaScript 开发中,我们常常需要将一个非数组对象转成数组,以便进行遍历、排序等操作。此时,我们可以使用多种方法将非数组对象转成数组。 方法一:Array.from() ES6 提供了 Array.from() 方法,可以将类数组对象或可遍历对象转成真正的数组。该方法的语法…

    other 2023年6月25日
    00
  • java父类和子类初始化顺序的深入理解

    下面我将详细讲解Java父类和子类初始化顺序的深入理解。 父类和子类初始化顺序的基本概念 在Java中,对象的初始化包括两部分:静态初始化和实例初始化。当类被加载时,它的静态成员会被初始化;当类的对象被创建时,会调用构造函数进行实例初始化。父类和子类的初始化顺序如下: 父类的静态成员初始化 子类的静态成员初始化 父类的实例成员初始化 父类的构造函数初始化 子…

    other 2023年6月26日
    00
  • 电脑启动不起来怎么办 电脑启动失败解决办法

    电脑启动不起来怎么办? 当我们打开电脑时,电脑无法正常启动,通常会出现蓝屏、黑屏或卡在启动画面等问题。这些问题可能由于硬件故障、软件问题、驱动程序错误或电源供应问题等多种原因引起。 一、硬件相关故障排查 确认电脑是否插上电源插头并通电 检查电脑电源与显示器的连接是否正确 排查电脑是否存在硬件问题,比如硬盘的坏道、内存的损坏等 如果电脑上有外设(如鼠标、键盘、…

    other 2023年6月27日
    00
  • 【js新手教程】js获取当前星期几的几种方法

    【js新手教程】js获取当前星期几的几种方法 在JavaScript中,获取当前星期几是一项常见的任务。本教程将介绍几种获取当前星期几方法。 方法一:使用Date对象 JavaScript中的Date对象提供了获取当前日期和时间的方法。其中,getDay()方法可以返回当前星期,返回值为0-6,分别代表星期日到星期六。 以下是使用Date对象获取当前星期几的…

    other 2023年5月7日
    00
  • JavaWeb中Servlet的深入理解

    一、JavaWeb中Servlet的基础知识 Servlet是什么? Servlet是JavaEE中的一种规范,它是一个Web应用程序的组件,主要用于处理HTTP请求和响应。Servlet运行在服务器端,可以动态生成响应,也可以通过各种方式与客户端交互。 Servlet的生命周期 Servlet有4个生命周期阶段,分别是初始化、服务、销毁和被动态添加。其中,…

    other 2023年6月27日
    00
  • 聊聊java变量的初始化之后的默认值

    让我来详细讲解一下 Java 变量初始化后的默认值。 Java 变量初始化后的默认值 Java 中,变量在被定义时,如果没有赋予初始值,Java 会为其赋予一个默认值。这个默认值在变量定义时就已经赋予了,即使没有显式地对变量进行初始化,Java 也不会报错。 变量的类型决定了它的默认值。下面是 Java 基本数据类型变量在不经过初始化的情况下的默认值: bo…

    other 2023年6月20日
    00
  • 学习JVM之java内存区域与异常

    学习JVM之java内存区域与异常攻略 1. Java内存区域 Java虚拟机(JVM)将内存划分为不同的区域,用于存储不同类型的数据和执行不同的操作。了解这些内存区域对于理解Java程序的内存管理和性能优化至关重要。 1.1 方法区 方法区是JVM中的一块内存区域,用于存储类的结构信息,如类的字段、方法、常量池等。方法区是被所有线程共享的,它在JVM启动时…

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