MyBatis-Plus Wrapper条件构造器的用法
MyBatis-Plus 中的 Wrapper 是一个非常强大的条件构造器,用于构建复杂的查询条件。以下是一些常见的 Wrapper 用法示例:
基本用法
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();
等值查询
queryWrapper.eq("name", "张三");
模糊查询
queryWrapper.like("name", "张");
范围查询
queryWrapper.between("age", 18, 30);
排序
queryWrapper.orderByDesc("age");
复合条件
queryWrapper.eq("name", "张三") .or() .eq("name", "李四");
子查询
queryWrapper.inSql("id", "SELECT id FROM user WHERE age > 18");
自定义 SQL 片段
queryWrapper.apply("DATE_FORMAT(create_time, '%Y-%m-%d') = {0}", "2023-10-01");
分组查询
queryWrapper.groupBy("department_id");
链式调用
queryWrapper.eq("name", "张三") .gt("age", 18) .orderByDesc("create_time");
使用 Lambda 表达式
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(User::getName, "张三") .gt(User::getAge, 18);
更新条件
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; UpdateWrapper<User> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("name", "张三") .set("age", 20);
删除条件
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; UpdateWrapper<User> deleteWrapper = new UpdateWrapper<>(); deleteWrapper.eq("name", "张三");
组合条件
queryWrapper.eq("name", "张三") .and(i -> i.eq("age", 18).or().eq("age", 20));
空值判断
queryWrapper.isNull("email"); queryWrapper.isNotNull("email");
存在判断
queryWrapper.exists("SELECT 1 FROM user WHERE age > 18");
不等于条件
queryWrapper.ne("name", "张三");
大于等于和小于等于
queryWrapper.ge("age", 18); queryWrapper.le("age", 30);
多字段排序
queryWrapper.orderByDesc("age").orderByAsc("name");
分页查询
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; Page<User> page = new Page<>(1, 10); userMapper.selectPage(page, queryWrapper);
参与讨论
(Participate in the discussion)
参与讨论