您好,登录后才能下订单哦!
MyBatis-Plus(简称MP)是MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,简化开发、提高效率。QueryWrapper是MyBatis-Plus中用于构建查询条件的核心类之一,它提供了丰富的API来构建复杂的SQL查询条件。本文将详细介绍QueryWrapper的使用方法,帮助开发者更好地利用MyBatis-Plus进行数据库操作。
QueryWrapper是MyBatis-Plus中用于构建查询条件的类,它继承自AbstractWrapper,提供了丰富的API来构建SQL查询条件。通过QueryWrapper,开发者可以方便地构建各种复杂的查询条件,而不需要手动编写SQL语句。
eq
方法用于构建等于条件,即column = value
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三");
List<User> userList = userMapper.selectList(queryWrapper);
ne
方法用于构建不等于条件,即column != value
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ne("name", "张三");
List<User> userList = userMapper.selectList(queryWrapper);
gt
方法用于构建大于条件,即column > value
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);
ge
方法用于构建大于等于条件,即column >= value
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);
lt
方法用于构建小于条件,即column < value
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lt("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);
le
方法用于构建小于等于条件,即column <= value
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.le("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);
between
方法用于构建区间条件,即column BETWEEN value1 AND value2
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.between("age", 18, 30);
List<User> userList = userMapper.selectList(queryWrapper);
notBetween
方法用于构建不在区间内的条件,即column NOT BETWEEN value1 AND value2
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notBetween("age", 18, 30);
List<User> userList = userMapper.selectList(queryWrapper);
like
方法用于构建模糊查询条件,即column LIKE '%value%'
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "张");
List<User> userList = userMapper.selectList(queryWrapper);
notLike
方法用于构建不包含的模糊查询条件,即column NOT LIKE '%value%'
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notLike("name", "张");
List<User> userList = userMapper.selectList(queryWrapper);
likeLeft
方法用于构建左模糊查询条件,即column LIKE '%value'
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "三");
List<User> userList = userMapper.selectList(queryWrapper);
likeRight
方法用于构建右模糊查询条件,即column LIKE 'value%'
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeRight("name", "张");
List<User> userList = userMapper.selectList(queryWrapper);
isNull
方法用于构建为空的条件,即column IS NULL
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("email");
List<User> userList = userMapper.selectList(queryWrapper);
isNotNull
方法用于构建不为空的条件,即column IS NOT NULL
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNotNull("email");
List<User> userList = userMapper.selectList(queryWrapper);
in
方法用于构建在某个集合内的条件,即column IN (value1, value2, ...)
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.in("age", Arrays.asList(18, 20, 22));
List<User> userList = userMapper.selectList(queryWrapper);
notIn
方法用于构建不在某个集合内的条件,即column NOT IN (value1, value2, ...)
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notIn("age", Arrays.asList(18, 20, 22));
List<User> userList = userMapper.selectList(queryWrapper);
inSql
方法用于构建子查询条件,即column IN (sql)
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.inSql("id", "select id from user where age > 18");
List<User> userList = userMapper.selectList(queryWrapper);
notInSql
方法用于构建不在子查询结果中的条件,即column NOT IN (sql)
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notInSql("id", "select id from user where age > 18");
List<User> userList = userMapper.selectList(queryWrapper);
groupBy
方法用于构建分组条件,即GROUP BY column
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.groupBy("age");
List<User> userList = userMapper.selectList(queryWrapper);
orderByAsc
方法用于构建升序排序条件,即ORDER BY column ASC
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByAsc("age");
List<User> userList = userMapper.selectList(queryWrapper);
orderByDesc
方法用于构建降序排序条件,即ORDER BY column DESC
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("age");
List<User> userList = userMapper.selectList(queryWrapper);
having
方法用于构建分组后的过滤条件,即HAVING condition
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.groupBy("age").having("count(age) > 1");
List<User> userList = userMapper.selectList(queryWrapper);
and
方法用于构建AND连接的条件,即condition1 AND condition2
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三").and(wrapper -> wrapper.gt("age", 18).lt("age", 30));
List<User> userList = userMapper.selectList(queryWrapper);
or
方法用于构建OR连接的条件,即condition1 OR condition2
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三").or().eq("name", "李四");
List<User> userList = userMapper.selectList(queryWrapper);
nested
方法用于构建嵌套条件,即(condition)
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.nested(wrapper -> wrapper.eq("name", "张三").or().eq("name", "李四"));
List<User> userList = userMapper.selectList(queryWrapper);
apply
方法用于构建自定义SQL片段,即SQL片段
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.apply("date_format(create_time, '%Y-%m-%d') = '2023-10-01'");
List<User> userList = userMapper.selectList(queryWrapper);
exists
方法用于构建存在子查询的条件,即EXISTS (sql)
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.exists("select 1 from user where age > 18");
List<User> userList = userMapper.selectList(queryWrapper);
notExists
方法用于构建不存在子查询的条件,即NOT EXISTS (sql)
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notExists("select 1 from user where age > 18");
List<User> userList = userMapper.selectList(queryWrapper);
last
方法用于在SQL语句的最后添加自定义SQL片段,即SQL片段
。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.last("limit 10");
List<User> userList = userMapper.selectList(queryWrapper);
QueryWrapper支持链式调用,可以在一行代码中构建复杂的查询条件。
List<User> userList = userMapper.selectList(new QueryWrapper<User>()
.eq("name", "张三")
.gt("age", 18)
.lt("age", 30)
.orderByAsc("age")
.last("limit 10")
);
LambdaQueryWrapper是QueryWrapper的Lambda表达式版本,可以通过Lambda表达式来构建查询条件,避免硬编码字段名。
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getName, "张三")
.gt(User::getAge, 18)
.lt(User::getAge, 30);
List<User> userList = userMapper.selectList(lambdaQueryWrapper);
QueryWrapper是MyBatis-Plus中非常强大的查询条件构建工具,通过它我们可以方便地构建各种复杂的SQL查询条件。本文详细介绍了QueryWrapper的基本查询方法和复杂查询方法,并展示了如何使用链式调用和LambdaQueryWrapper来简化代码。希望本文能帮助开发者更好地理解和使用MyBatis-Plus中的QueryWrapper。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。