MyBatis-Plus框架QueryWrapper查询构造器的使用入门

QueryWrapper 是 MyBatis-Plus 框架提供的一个强大的查询构造器,用于方便地构建 SQL 查询条件,避免手写复杂的 SQL 语句。下面从基本使用、常用方法、链式调用和复杂查询示例等方面详细介绍 QueryWrapper 的使用。

1. 引入依赖

首先要确保项目中已经引入了 MyBatis-Plus 的依赖。如果你使用的是 Maven,可以在 pom.xml 中添加以下依赖:

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>最新版本号</version>
</dependency>

2. 基本使用

以下是一个简单的示例,展示如何使用 QueryWrapper 查询 User 表中年龄大于 18 岁的所有用户:

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.demo2.entity.User;
import com.example.demo2.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getUsersByAgeGreaterThan18() {
// 创建 QueryWrapper 对象
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 添加查询条件:年龄大于 18
queryWrapper.gt("age", 18);
// 执行查询
return userMapper.selectList(queryWrapper);
}
}

在这个示例中:

  • 首先创建了一个 QueryWrapper<User> 对象,泛型 User 表示查询的实体类。
  • 然后使用 gt 方法添加查询条件,gtgreater than 的缩写,用于表示大于。
  • 最后调用 userMapper.selectList(queryWrapper) 方法执行查询,返回符合条件的用户列表。

3. 常用方法

3.1 等值查询(eq)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "John"); // 查询姓名为 John 的用户
List<User> users = userMapper.selectList(queryWrapper);

3.2 模糊查询(like)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "J"); // 查询姓名中包含 J 的用户
List<User> users = userMapper.selectList(queryWrapper);

3.3 范围查询(between)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.between("age", 18, 30); // 查询年龄在 18 到 30 之间的用户
List<User> users = userMapper.selectList(queryWrapper);

3.4 排序查询(orderByAsc/orderByDesc)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByAsc("age"); // 按年龄升序排序
List<User> users = userMapper.selectList(queryWrapper);

3.5 逻辑查询(and/or)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("gender", "male").and(wrapper -> wrapper.gt("age", 18));
// 查询性别为男且年龄大于 18 岁的用户
List<User> users = userMapper.selectList(queryWrapper);

4. 链式调用

QueryWrapper 支持链式调用,让代码更加简洁:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
List<User> users = userMapper.selectList(
queryWrapper.eq("gender", "male")
.gt("age", 18)
.orderByAsc("age")
);

5. 复杂查询示例

以下是一个复杂查询的示例,查询姓名中包含 J 且年龄在 20 到 30 岁之间,按年龄降序排序的用户:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "J")
.between("age", 20, 30)
.orderByDesc("age");
List<User> users = userMapper.selectList(queryWrapper);

6. 条件判断

在实际开发中,查询条件可能是动态的,你可以根据不同的情况添加条件:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
String name = "J";
Integer minAge = 20;
Integer maxAge = 30;
if (name != null && !name.isEmpty()) {
queryWrapper.like("name", name);
}
if (minAge != null && maxAge != null) {
queryWrapper.between("age", minAge, maxAge);
}
List<User> users = userMapper.selectList(queryWrapper);
发布于   xiins  阅读(82)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示