开发者

MyBatis-Plus 条件构造器Wrapper使用示例详解(最新整理)

目录
  • 一、条件构造器概述
  • 二、核心 Wrapper 类型
  • 三、基础使用示例
    •   1. 简单条件构建
    • 2. Lambda 表达式构建
    • 3. 嵌套条件构建
    • 4. 更新操作条件构建
  • 四、常用方法说明
    • 条件构建方法
    • 排序方法
    • 嵌套条件方法
  • 五、LambdaQueryWrapper 优势
    • 六、注意事项
      • 七、更多示例 QueryWrapper
        • 示例 1. 简单查询
      • LambdaQueryWrapper
        • 示例 1. 简单查询
        • 2. 复杂查询
      • UpdateWrapper 示例
        • 1. 简单更新
        • 2. 复杂更新

      python、条件构造器概述

      条件构造器(Wrapper)是 MyBATis-Plus 框架中用于动态构建 SQL 条件的核心工具类,通过链式编程方式实现复杂查询条件的组合。其主要作用包括:

      • 替代传统 XML 中的动态 SQL 标签
      • 提供类型安全的条件构建方式
      • 支持 Lambda 表达式语法
      • 实现复杂的 AND/OR 条件组合

      注意:MyBatis-Plus 3.x+ 版本已弃用 EntityWrapper,推荐使用 QueryWrapperLambdaQueryWrapper

      二、核心 Wrapper 类型

      类型说明版本要求
      QueryWrapper<T>通用条件构造器3.0+
      UpdateWrapper<T>更新操作条件构造器3.0+
      LambdaQueryWrapper<T>Lambda 语法条件构造器3.0.5+

      三、基础使用示例

        1. 简单条件构建

      QueryWrapper<User> wrapper = new QueryWrapper<>();
      wrapper.eq("age", 25)
             .like("name", "张")
             .between("create_time", startDate, endDate)
             .orderByDesc("id");
      List<User> users = userMapper.selectList(wrapper);

      2. Lambda 表达式构建

      LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
      lambdaWrapper.eq(User::getAge, 25)
                   .like(User::getName, "张")
                   .between(User::getCreateTime, startDate, endDate)
                   .orderByDesc(User::getId);
      List<User> users = userMapper.selectList(lambdaWrapper);

      3. 嵌套条件构建

      QueryWrapper<User> wrapper = new QueryWrapper<>();
      wrapper.and(w -> w.eq("age", 25).or().like("name", "张"))
             .between("create_time", startDate, endDate)
             .orderByDesc("id");
      List<User> users = userMapper.selectList(wrapper);

      4. 更新操作条件构建

      UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
      updateWrapper.eq("id", 1)
                   .set("name", "新名字")
                   .set("age", 30);
      int result = userMapper.update(null, updateWrapper);

      四、常用方法说明

      条件构建方法

      方法名说明示例
      eq等于eq("age", 25)
      ne不等于ne("age", 25)
      gt大于gt("age", 25)
      ge大于等于ge("age", 25)
      lt小于lt("age", 25)
      le小于等于le("age", 25)
      like模糊查询like("name", "张")
      notLike非模糊查询notLike("name", "张")
      between范围查询between("age", 20, 30)
      notBetween非范围查询notBetween("age", 20, 30)
      inIN 查询in("age", Arrays.asList(20, 25, 30))
      notInNOT IN 查询notIn("age", Arrays.asList(20, 25, 30))
      isNullIS NULL 查询isNull("age")
      isNotNullIS NOT NULL 查询isNotNull("age")

      排序方法

      方法名说明示例
      orderByAsc升序排序orderByAsc("id")
      orderByDesc降序排序orderByDesc("id")

      嵌套条件方法

      方法名说明示例
      andAND 嵌套条件and(w -> w.eq("age", 25).or().like("name", "张"))
      orOR 嵌套条件or(w -> w.eq("age", 25).or().like("name", "张"))

      五、LambdaQueryWrapper 优势

      LambdaQueryWrapper 使用 Lambda 表达式,具有以下优势:

      • 类型安全:避免字段名拼写错误
      • 代码可读性高:直接使用实体类字段
      • IDE 自动补全javascript:方便快速构建条件

      六、注意事项

      • 空值处理:条件构造器会自动忽略 null
      • SQL 注入:避免直接拼接用户输入,使用参数绑定防止 SQL 注入
      • 性能优化:复杂条件查询时,合理使用索引

      七、更多示例 QueryWrapper

      示例 1. 简单查询

      QueryWrapper<User> wrapper = new QueryWrapper<>();
      wrapper.eq("age", 25)
             .like("name", "张")
             .between("create_t编程客栈ime", startDate, endDate)
             .orderByDesc("id");
      List<User> users = userMapper.selectList(wrapper);

      2. 复杂查询

      QueryWrapper<User> wrapper = new QueryWrapper<>();
      wrapper.and(w -> w.eq("age", 25).or().like("name", "张"))
             .and(w -> w.between("create_time", startDate, endDate))
             .orderByDesc("id");
      List<User> users = userMapper.selectList(wrapper);

      3. 删除操作

      QueryWrapper<User> wrapper = new QueryWrapper<>();
      wrapper.isNull("email");
      int result = userMapper.delete(wrapper);

      4. 更新操作

      QueryWrapper<User> wrapper = new QueryWrapper<>();
      wrappepythonr.eq("id", 1);
      User user = new User();
      user.setName("新名字");
      user.setAge(30);
      int result = userMapper.update(user, wrapper);

      LambdaQueryWrapper

      示例 1. 简单查询

      LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
      lambdaWrapper.eq(User::getAge, 25)
                   .like(User::getName, "张")
                   .between(User::getCreateTime, startDate, endDate)
                   .orderByDesc(User::getId);
      qDJhmcAMVList<User> users = userMapper.selectList(lambdaWrapper);

      2. 复杂查询

      LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
      lambdaWrapper.and(w -> w.eq(User::getAge, 25).or().like(User::getName, "张"))
                   .and(w -> w.between(User::getCreateTime, startDate, endDate))
                   .orderByDesc(User::getId);
      List<User> users = userMapper.selectList(lambdaWrapper);

      UpdateWrapper 示例

      1. 简单更新

      UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
      updateWrapper.eq("id", 1)
                   .set("name", "新名字")
                   .set("age", 30);
      int result = userMapper.update(null, updateWrapper);

      2. 复杂更新

      UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
      updateWrapper.like("name", "a")
                   .and(w -> w.gt("age", 20).or().isNull("email"))
                   .set("name", "小黑")
                   .set("email", "dhsjfghr");
      int result = userMapper.update(null, updateWrapper);

      到此这篇关于MyBatis-Plus 条件构造器Wrapper使用指南的文章就介绍到这了,更多相关MyBatis-Plus 条件构造器Wrapper内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜