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方法添加查询条件,gt是greater 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);
浙公网安备 33010602011771号