QueryWrapper
是 MyBatis-Plus 框架提供的查询构造器,用于构建查询条件。它属于 MyBatis-Plus 的核心组件之一,简化了数据库操作的代码。
以下是对 QueryWrapper
的一些基本使用说明:
创建 QueryWrapper 对象:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
基本的查询条件:
// 等值条件
queryWrapper.eq("username", "admin");
// 不等值条件
queryWrapper.ne("age", 25);
// 大于、小于、大于等于、小于等于条件
queryWrapper.gt("age", 20);
queryWrapper.lt("age", 30);
queryWrapper.ge("age", 20);
queryWrapper.le("age", 30);
?模糊查询:
queryWrapper.like("username", "a"); // 模糊查询 username 包含有 "a" 的记录
多条件查询:
queryWrapper.and(qw -> qw.eq("username", "admin").ne("age", 25));
排序:
queryWrapper.orderByAsc("age"); // 升序
queryWrapper.orderByDesc("age"); // 降序
?嵌套查询:
queryWrapper.nested(qw -> qw.eq("age", 25).or().eq("age", 30));
自定义 SQL 片段:
queryWrapper.apply("date_format(create_time, '%Y-%m-%d') = '2022-01-01'");
分组查询:
queryWrapper.groupBy("gender");
Having 条件:
queryWrapper.having("sum(age) > {0}", 20);
其他条件:
// 为空判断
queryWrapper.isNull("email");
// 非空判断
queryWrapper.isNotNull("email");
// IN 条件
queryWrapper.in("age", Arrays.asList(25, 30, 35));
// NOT IN 条件
queryWrapper.notIn("age", Arrays.asList(25, 30, 35));
// BETWEEN 条件
queryWrapper.between("age", 20, 30);
// NOT BETWEEN 条件
queryWrapper.notBetween("age", 20, 30);
Lambda 表达式:
MyBatis-Plus 还提供了 LambdaQueryWrapper,使用 Lambda 表达式进行类型安全的字段操作。示例:
LambdaQueryWrapper<User> lambdaQuery = Wrappers.lambdaQuery();
lambdaQuery.eq(User::getUsername, "admin").ne(User::getAge, 25);
这只是 QueryWrapper
的一些常见用法,具体的使用还取决于你的实际业务需求。根据具体的查询条件,你可以组合使用不同的方法,构建出灵活、简洁的查询语句。