您好,登录后才能下订单哦!
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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。