MyBatisPlus怎么实现条件查询的三种格式

发布时间:2022-08-17 10:39:20 作者:iii
来源:亿速云 阅读:232

MyBatisPlus怎么实现条件查询的三种格式

MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。在实际开发中,条件查询是非常常见的操作。MyBatis-Plus 提供了多种方式来实现条件查询,本文将详细介绍 MyBatis-Plus 实现条件查询的三种常见格式。

1. 使用 QueryWrapper 进行条件查询

QueryWrapper 是 MyBatis-Plus 提供的一个用于构建查询条件的工具类。通过 QueryWrapper,我们可以方便地构建各种复杂的查询条件。

1.1 基本用法

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三")
            .ge("age", 18)
            .le("age", 30)
            .orderByDesc("create_time");

List<User> userList = userMapper.selectList(queryWrapper);

在上面的代码中,我们创建了一个 QueryWrapper 对象,并通过 eqgele 等方法设置了查询条件。eq 表示等于,ge 表示大于等于,le 表示小于等于。最后,我们通过 orderByDesc 方法对查询结果进行排序。

1.2 复杂条件

QueryWrapper 还支持更复杂的条件组合,例如 andor 等。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三")
            .and(wrapper -> wrapper.ge("age", 18).le("age", 30))
            .or(wrapper -> wrapper.eq("name", "李四").ge("age", 25));

List<User> userList = userMapper.selectList(queryWrapper);

在这个例子中,我们使用了 andor 方法来组合多个条件。and 表示同时满足多个条件,or 表示满足其中一个条件即可。

1.3 动态条件

QueryWrapper 还支持动态条件的构建,可以根据业务逻辑动态添加条件。

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(name)) {
    queryWrapper.eq("name", name);
}
if (age != null) {
    queryWrapper.ge("age", age);
}

List<User> userList = userMapper.selectList(queryWrapper);

在这个例子中,我们根据传入的参数动态构建查询条件。如果 name 不为空,则添加 name 的查询条件;如果 age 不为空,则添加 age 的查询条件。

2. 使用 LambdaQueryWrapper 进行条件查询

LambdaQueryWrapperQueryWrapper 的 Lambda 表达式版本,它提供了更加类型安全的查询条件构建方式。

2.1 基本用法

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getName, "张三")
                  .ge(User::getAge, 18)
                  .le(User::getAge, 30)
                  .orderByDesc(User::getCreateTime);

List<User> userList = userMapper.selectList(lambdaQueryWrapper);

在这个例子中,我们使用了 LambdaQueryWrapper 来构建查询条件。User::getName 表示引用 User 类的 name 属性,这种方式可以避免硬编码字段名,提高代码的可读性和可维护性。

2.2 复杂条件

LambdaQueryWrapper 同样支持复杂的条件组合。

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getName, "张三")
                  .and(wrapper -> wrapper.ge(User::getAge, 18).le(User::getAge, 30))
                  .or(wrapper -> wrapper.eq(User::getName, "李四").ge(User::getAge, 25));

List<User> userList = userMapper.selectList(lambdaQueryWrapper);

在这个例子中,我们使用了 andor 方法来组合多个条件,与 QueryWrapper 的使用方式类似。

2.3 动态条件

LambdaQueryWrapper 也支持动态条件的构建。

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(name)) {
    lambdaQueryWrapper.eq(User::getName, name);
}
if (age != null) {
    lambdaQueryWrapper.ge(User::getAge, age);
}

List<User> userList = userMapper.selectList(lambdaQueryWrapper);

在这个例子中,我们根据传入的参数动态构建查询条件,与 QueryWrapper 的使用方式类似。

3. 使用 Wrappers 工具类进行条件查询

MyBatis-Plus 还提供了一个 Wrappers 工具类,可以更方便地创建 QueryWrapperLambdaQueryWrapper

3.1 使用 Wrappers 创建 QueryWrapper

QueryWrapper<User> queryWrapper = Wrappers.query();
queryWrapper.eq("name", "张三")
            .ge("age", 18)
            .le("age", 30)
            .orderByDesc("create_time");

List<User> userList = userMapper.selectList(queryWrapper);

在这个例子中,我们使用 Wrappers.query() 方法创建了一个 QueryWrapper 对象,并设置了查询条件。

3.2 使用 Wrappers 创建 LambdaQueryWrapper

LambdaQueryWrapper<User> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(User::getName, "张三")
                  .ge(User::getAge, 18)
                  .le(User::getAge, 30)
                  .orderByDesc(User::getCreateTime);

List<User> userList = userMapper.selectList(lambdaQueryWrapper);

在这个例子中,我们使用 Wrappers.lambdaQuery() 方法创建了一个 LambdaQueryWrapper 对象,并设置了查询条件。

3.3 使用 Wrappers 进行链式调用

Wrappers 工具类还支持链式调用,可以更简洁地构建查询条件。

List<User> userList = userMapper.selectList(Wrappers.<User>lambdaQuery()
    .eq(User::getName, "张三")
    .ge(User::getAge, 18)
    .le(User::getAge, 30)
    .orderByDesc(User::getCreateTime));

在这个例子中,我们直接在 selectList 方法中使用 Wrappers.lambdaQuery() 方法进行链式调用,构建查询条件。

总结

MyBatis-Plus 提供了多种方式来实现条件查询,包括 QueryWrapperLambdaQueryWrapperWrappers 工具类。QueryWrapper 适合需要硬编码字段名的场景,LambdaQueryWrapper 提供了类型安全的查询条件构建方式,Wrappers 工具类则提供了更简洁的链式调用方式。根据实际需求选择合适的查询方式,可以大大提高开发效率和代码的可维护性。

推荐阅读:
  1. redis怎么实现条件查询?
  2. Springboot整合MybatisPlus的实现过程解析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatisplus

上一篇:SpringBoot自动配置特点与原理是什么

下一篇:SpringBoot怎么使用@Cacheable进行缓存与取值

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》