mybatisplus 自定义条件查询
时间: 2023-09-27 14:11:23 浏览: 93
mybatis-plus提供了QueryWrapper类来实现自定义条件查询。您可以使用QueryWrapper的方法来设置查询条件,例如eq()、ne()、like()等。下面是一个示例代码,展示了如何使用QueryWrapper进行自定义条件查询:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 20)
.like("name", "Tom")
.ne("gender", "female");
List<User> userList = userDao.selectList(queryWrapper);
```
在这个示例中,我们使用eq()方法来设置age字段等于20的条件,使用like()方法来设置name字段包含"Tom"的条件,使用ne()方法来设置gender字段不等于"female"的条件。然后我们调用selectList方法执行查询,并将查询结果返回给userList。
这只是一个简单的示例,您可以根据自己的需求使用QueryWrapper提供的其他方法来构建更复杂的查询条件。
相关问题
mybatisplus自定义条件分页查询
MybatisPlus 提供了很多分页查询的方法,但是如果需要自定义条件进行分页查询的话,可以使用 `Page` 类的构造函数来实现。
首先,创建一个 `Page` 对象,并传入当前页码和每页显示的记录数:
```java
Page<User> page = new Page<>(currentPage, pageSize);
```
然后,通过 `QueryWrapper` 构建查询条件:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda()
.eq(User::getGender, gender)
.gt(User::getAge, age);
```
这里以 `gender` 和 `age` 作为查询条件,可以根据实际需求进行修改。
最后,将 `Page` 对象和查询条件作为参数传入 `selectPage` 方法中:
```java
IPage<User> result = userMapper.selectPage(page, wrapper);
```
完整代码如下:
```java
Page<User> page = new Page<>(currentPage, pageSize);
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda()
.eq(User::getGender, gender)
.gt(User::getAge, age);
IPage<User> result = userMapper.selectPage(page, wrapper);
```
这样就可以实现自定义条件分页查询了。
mybatisplus自定义排序查询
以下是MyBatisPlus自定义排序查询的示例代码:
```java
// 定义排序方式的枚举类
public enum OrderType {
ASC, DESC
}
// 自定义排序查询接口
public interface CustomMapper<T> extends BaseMapper<T> {
List<T> selectListWithOrder(@Param("ew") Wrapper<T> wrapper, @Param("column") String column, @Param("orderType") OrderType orderType);
}
// 在实现类中实现自定义排序查询
public class CustomMapperImpl<T> extends BaseMapperImpl<T> implements CustomMapper<T> {
@Override
public List<T> selectListWithOrder(@Param("ew") Wrapper<T> wrapper, @Param("column") String column, @Param("orderType") OrderType orderType) {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", 1); // 添加查询条件
queryWrapper.orderBy(true, orderType == OrderType.ASC, column); // 添加排序条件
return this.selectList(queryWrapper);
}
}
```
在上述代码中,我们首先定义了一个枚举类`OrderType`,用于表示排序方式。然后,我们定义了一个自定义查询接口`CustomMapper`,该接口继承了MyBatisPlus的`BaseMapper`接口,并添加了一个`selectListWithOrder`方法,用于自定义排序查询。最后,在实现类`CustomMapperImpl`中,我们实现了自定义排序查询的具体逻辑,即根据传入的查询条件和排序方式,构造一个`QueryWrapper`对象,并调用`selectList`方法进行查询。
阅读全文