Mybatis-plus中的QueryWrapper的多种用法

彩虹的尽头 15小时前 ⋅ 4 阅读

引言

Mybatis-plus是基于Mybatis的增强版ORM框架,提供了很多强大的功能来简化数据库操作。其中之一就是QueryWrapper,它是Mybatis-plus中用于构建查询条件的工具类。QueryWrapper提供了多种用法,本文将深入探讨。

1. 基本用法

QueryWrapper的基本用法非常简单,可以通过chain式编程来实现复杂的查询条件。首先需要导入相关的类:

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;

然后就可以使用QueryWrapper的各种方法了:

  • eq:等于
  • ne:不等于
  • gt:大于
  • ge:大于等于
  • lt:小于
  • le:小于等于
  • isNotNull:不为空
  • isNull:为空
  • in:在某个列表中
  • notIn:不在某个列表中
  • like:模糊匹配
  • between:在某个范围内
  • notBetween:不在某个范围内
  • orderByAsc:升序排序
  • orderByDesc:降序排序

以下是一个基本用法的示例:

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "张三").ge("age", 18).orderByAsc("id");

List<User> userList = userDao.selectList(wrapper);

2. 动态查询条件

QueryWrapper还支持动态查询条件,可以根据具体情况动态添加查询条件。比如,在搜索功能中,用户可以选择输入一个或多个查询条件,这时可以使用QueryWrapper来动态构建查询条件。

在动态查询条件中,要注意使用StringUtils.isNotEmpty方法来判断查询条件是否为空,否则可能会出现空指针异常。以下是一个动态查询条件的示例:

String name = "张三";
Integer age = null;

QueryWrapper<User> wrapper = new QueryWrapper<>();
if (StringUtils.isNotEmpty(name)) {
    wrapper.like("name", name);
}
if (age != null) {
    wrapper.eq("age", age);
}

List<User> userList = userDao.selectList(wrapper);

3. 自定义查询条件

有时候,Mybatis-plus提供的方法还不能满足我们的需求,这时可以通过自定义查询条件来实现。自定义查询条件可以使用lambda表达式,使用起来非常方便。以下是一个自定义查询条件的示例:

QueryWrapper<User> wrapper = new QueryWrapper<User>()
    .select("name", "age")
    .lambda()
    .like(User::getName, "张三")
    .ge(User::getAge, 18)
    .orderByAsc(User::getId);

List<User> userList = userDao.selectList(wrapper);

在以上示例中,通过select方法指定只查询name和age字段,通过lambda方法指定后面的查询条件使用lambda表达式来指定。

结论

本文介绍了Mybatis-plus中QueryWrapper的多种用法,包括基本用法、动态查询条件和自定义查询条件。QueryWrapper是Mybatis-plus中非常强大的一个功能,可以帮助我们简化数据库操作。希望本文对你有所帮助。

参考资料


全部评论: 0

    我有话说: