MyBatis-Plus Wrapper条件构造器的用法

MyBatis-Plus 中的 Wrapper 是一个非常强大的条件构造器,用于构建复杂的查询条件。以下是一些常见的 Wrapper 用法示例:

  1. 基本用法

    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.core.toolkit.Wrappers;
    
    // 创建 QueryWrapper 实例
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    
    // 或者使用 Wrappers 工具类创建
    QueryWrapper<User> queryWrapper2 = Wrappers.query();
    
  2. 等值查询

     queryWrapper.eq("name", "张三");
    
  3. 模糊查询

     queryWrapper.like("name", "张");
    
  4. 范围查询

     queryWrapper.between("age", 18, 30);
    
  5. 排序

     queryWrapper.orderByDesc("age");
    
  6. 复合条件

     queryWrapper.eq("name", "张三")
                 .or()
                 .eq("name", "李四");
    
  7. 子查询

     queryWrapper.inSql("id", "SELECT id FROM user WHERE age > 18");
    
  8. 自定义 SQL 片段

     queryWrapper.apply("DATE_FORMAT(create_time, '%Y-%m-%d') = {0}", "2023-10-01");
    
  9. 分组查询

     queryWrapper.groupBy("department_id");
    
  10. 链式调用

      queryWrapper.eq("name", "张三")
                  .gt("age", 18)
                  .orderByDesc("create_time");
    
  11. 使用 Lambda 表达式

      import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
    
      LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
      lambdaQueryWrapper.eq(User::getName, "张三")
                        .gt(User::getAge, 18);
    
  12. 更新条件

      import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
    
      UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
      updateWrapper.eq("name", "张三")
                   .set("age", 20);
    
  13. 删除条件

      import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
    
      UpdateWrapper<User> deleteWrapper = new UpdateWrapper<>();
      deleteWrapper.eq("name", "张三");
    
  14. 组合条件

      queryWrapper.eq("name", "张三")
                  .and(i -> i.eq("age", 18).or().eq("age", 20));
    
  15. 空值判断

      queryWrapper.isNull("email");
      queryWrapper.isNotNull("email");
    
  16. 存在判断

      queryWrapper.exists("SELECT 1 FROM user WHERE age > 18");
    
  17. 不等于条件

      queryWrapper.ne("name", "张三");
    
  18. 大于等于和小于等于

      queryWrapper.ge("age", 18);
      queryWrapper.le("age", 30);
    
  19. 多字段排序

      queryWrapper.orderByDesc("age").orderByAsc("name");
    
  20. 分页查询

      import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    
      Page<User> page = new Page<>(1, 10);
      userMapper.selectPage(page, queryWrapper);