MyBatis Plus 条件构造器queryWrapper与updateWrapper详解

版权申诉
15 下载量 168 浏览量 更新于2024-09-01 收藏 275KB PDF 举报
"mybatis plus条件构造器queryWrapper、updateWrapper" MyBatis Plus是一个扩展了MyBatis功能的框架,提供了更加便捷的数据操作API。在MyBatis Plus中,`queryWrapper` 和 `updateWrapper` 是两个重要的条件构造器,它们简化了SQL查询和更新语句的编写。 一、条件构造器关系 `queryWrapper` 和 `updateWrapper` 都继承自一系列的抽象类和接口,形成了一个层次结构。`Wrapper` 是所有条件构造器的顶层抽象类,它定义了一些基本的方法。`AbstractWrapper` 是一个具体的抽象类,用于生成SQL的`WHERE`条件。`AbstractLambdaWrapper` 是用于处理Lambda表达式的类,而`LambdaQueryWrapper` 和 `LambdaUpdateWrapper` 分别是Lambda语法下的查询和更新包装器。对于非Lambda的使用,`QueryWrapper` 用于查询操作,`UpdateWrapper` 用于更新操作。 二、项目实例与用法 在实际项目中,我们可以根据需求选择使用 `queryWrapper` 或 `updateWrapper`。以下是一些基本的用法: 1. QueryWrapper:主要用于数据查询。你可以通过这个构造器设置各种条件,如等于、不等于、大于、小于等,以及逻辑运算符(AND、OR)。例如: ```java QueryWrapper<User> query = new QueryWrapper<>(); query.eq("username", "test"); // 等于条件 query.or().like("email", "example%"); // OR条件 List<User> users = userMapper.selectList(query); ``` 2. UpdateWrapper:则用于数据更新。它的使用方式与 `queryWrapper` 类似,但主要用于构建更新语句的`SET`部分。比如: ```java UpdateWrapper<User> update = new UpdateWrapper<>(); update.set("status", 1).eq("id", 1); // 设置status为1,条件为id等于1 userMapper.update(user, update); ``` 三、Lambda表达式支持 如果你的项目使用了Java 8的Lambda表达式,可以使用 `LambdaQueryWrapper` 和 `LambdaUpdateWrapper`,它们使得代码更加简洁且易于阅读。例如: ```java LambdaQueryWrapper<User> lambdaQuery = new LambdaQueryWrapper<>(); lambdaQuery.eq(User::getId, 1).or().like(User::getEmail, "example%"); List<User> users = userMapper.selectList(lambdaQuery); LambdaUpdateWrapper<User> lambdaUpdate = new LambdaUpdateWrapper<>(); lambdaUpdate.set(User::getStatus, 1).eq(User::getId, 1); userMapper.update(user, lambdaUpdate); ``` 四、方法格式和说明 `queryWrapper` 和 `updateWrapper` 提供了一系列方法,如 `eq`(等于)、`ne`(不等于)、`gt`(大于)、`lt`(小于)等,以及`and`、`or` 用于组合条件。此外,还有 `like`(模糊匹配)、`between`(介于之间)、`isNull`(为空)和 `isNotNull`(不为空)等,满足不同的查询需求。 五、总结 MyBatis Plus的条件构造器极大地简化了数据库操作,无论是基本的条件查询还是复杂的组合查询,都能通过这些构造器轻松实现。通过熟练掌握 `queryWrapper` 和 `updateWrapper` 的使用,能有效提高开发效率,降低出错概率,使代码更加整洁和易维护。