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日

相关文章

  • MybatisPlus字段类型转换的实现示例

    下面是详细讲解”MybatisPlus字段类型转换的实现示例”的完整攻略。 一、背景 Mybatis-Plus是Mybatis的增强工具,它提供了很多便利的功能,例如自动生成代码、分页查询、条件构造器等。另外,它还提供了对实体类中字段类型进行转换的功能。 二、实现方式 MybatisPlus对实体类中的字段类型进行转换的实现方式有两种: 1.注解方式 在要转…

    other 2023年6月25日
    00
  • 如何注册一个好的.com域名

    如何注册一个好的.com域名 步骤一:选择一个合适的域名注册平台 在注册一个好的.com域名之前,你需要选择一个可靠的域名注册平台。以下是一些受欢迎的域名注册平台的示例: GoDaddy:GoDaddy是全球最大的域名注册商之一,提供广泛的域名选择和易于使用的界面。 Namecheap:Namecheap是另一个受欢迎的域名注册平台,提供竞争力的价格和良好的…

    other 2023年8月5日
    00
  • delphi Sender和Tag的用法1

    以下是详细讲解“Delphi Sender和Tag的用法1”的完整攻略,包括使用步骤和两个示例说明。 使用步骤 使用Delphi中的Sender和Tag属性的步骤如下: 在控件的事件处理程序中,使用Sender属性获取触发事件的控件对象。 使用Tag属性设置或获取控件的标识信息。 示例说明 以下是两个使用Sender和Tag属性的示例: 示例1:使用Tag属…

    other 2023年5月7日
    00
  • C语言入门篇–理解地址及内存

    C语言入门篇–理解地址及内存 什么是地址 地址(address)在C语言中是十分重要的概念。每一个变量在内存中都有一个唯一的地址。地址是一个长整型(long int),用于表示该变量在内存中的存储位置。在C语言中,我们可以使用&运算符来获取变量的地址: int a = 10; printf("%p", &a); 上面的代…

    other 2023年6月27日
    00
  • Java super关键字的使用详解

    Java super关键字的使用详解 在Java中,super是一个关键字,用于访问父类中的属性和方法。通过使用super,我们可以调用父类中定义的属性和方法。本文将详细介绍super关键字的使用情况。 super的使用 在子类中,我们可以使用super来调用父类中的属性和方法。super可以使用两种方式来访问父类中的内容:访问父类中的属性以及调用父类中的方…

    other 2023年6月26日
    00
  • 快速构建Windows 8风格应用1-开发工具安装及模拟器使用

    快速构建Windows 8风格应用1-开发工具安装及模拟器使用攻略 本文将详细介绍如何快速构建Windows 8风格应用,包括开发工具的安装和模拟器的使用。本文将提供两个示例说明。 开发工具安装 在构建Windows 8风格应用之前,需要安装Visual Studio 2012或更高版本的开发工具。以下是安装步骤: 下载Visual Studio 2012或…

    other 2023年5月5日
    00
  • badblocks命令–检查磁盘装置中损坏的区块

    以下是“badblocks命令–检查磁盘装置中损坏的区块”的完整攻略: badblocks命令–检查磁盘装置中损坏的区块 badblocks是一个Linux命令,用于检查磁盘装置中损坏的区块。它可以扫描磁盘装置并标记出损坏的区块,从而帮助我们及时发现和解决磁盘问题。本攻略将详细讲解如何使用badblocks命令检查磁盘装置中损坏的区块。 步骤一:打开终端 首…

    other 2023年5月8日
    00
  • 关于python:如何进行不区分大小写的字符串比较?

    以下是关于“关于python:如何进行不区分大小写的字符串比较?”的完整攻略,包含两个示例。 如何进行不区分大小写的字符串比较 在Python中,我们可以使用lower()函数将字符串转换为小写,然后进行比较。以下是两个示例: 1. 使用lower()函数进行比较 str1 = "Hello World" str2 = "hel…

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