QueryWrapper 使用函数
时间: 2023-10-14 19:27:51 浏览: 102
QueryWrapper 是 MyBatis-Plus 中的一个查询构造器,可以通过链式调用的方式构建查询条件。在 QueryWrapper 中,我们可以使用函数来构建查询条件。
比如,我们可以使用 QueryWrapper 的 lambda 表达式来调用函数:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(User::getAge, 18).or(i -> i.eq(User::getName, "Tom").eq(User::getName, "Jerry"));
```
在这个例子中,我们使用了 QueryWrapper 的 lambda 表达式,调用了 eq 函数和 or 函数。其中,eq 函数用于判断年龄是否等于 18,or 函数用于组合两个或者多个查询条件,查询用户名为 Tom 或者 Jerry 的用户。
除了 eq 和 or 函数之外,QueryWrapper 中还提供了许多其他的函数,如:gt、lt、ge、le、in、notIn、like、notLike 等等。这些函数可以帮助我们构建各种复杂的查询条件。
相关问题
QueryWrapper中使用时间函数
在QueryWrapper中使用时间函数可以通过apply方法来实现。apply方法允许我们在查询条件中使用原生的SQL语句。下面是一个示例代码,演示了如何在QueryWrapper中使用to_date函数来比较时间字段:
```java
// 导入相关的类
import java.text.SimpleDateFormat;
import java.util.Date;
// 创建QueryWrapper对象
QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();
// 获取当前时间
Date currentDate = new Date();
// 格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String formattedDate = sdf.format(currentDate);
// 使用to_date函数进行比较
queryWrapper.apply(column + " >= TO_DATE('" + formattedDate + "', 'yyyy/MM/dd HH24:mi:ss')", null);
// 执行查询
List<Entity> result = entityMapper.selectList(queryWrapper);
```
在上面的代码中,我们首先导入了相关的类,然后创建了一个QueryWrapper对象。接下来,我们获取了当前时间,并使用SimpleDateFormat类将其格式化为字符串。然后,我们使用apply方法将to_date函数作为原生SQL语句传递给QueryWrapper对象的查询条件中。最后,我们执行查询并获取结果。
QueryWrapper不等于函数
### 使用QueryWrapper实现不等于查询
在MyBatis-Plus中,`QueryWrapper` 提供了多种方法用于构建不同的查询条件。对于不等于查询,可以通过 `ne` 方法来设置字段与给定值不相等的条件[^1]。
下面是一个具体的例子,假设有一个学生实体类 `Student` 和对应的Mapper接口 `StudentMapper`:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class StudentService {
@Autowired
private StudentMapper studentMapper;
public List<Student> getStudentsNotInClass(String className) {
QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
// 设置班级名称不等于指定值
queryWrapper.ne("class_name", className);
return studentMapper.selectList(queryWrapper);
}
}
```
此代码片段展示了如何利用 `QueryWrapper` 的 `ne` 方法设定 “班级名称(class_name)” 字段与传入参数 `className` 不匹配作为查询条件,从而获取不属于特定班级的所有学生记录[^2]。
此外,在实际应用中还可以链式调用其他的方法进一步细化查询逻辑,比如增加更多的过滤条件或是排序规则等[^3]。
阅读全文