Mybatisplus中QueryWrapper的使用方法有哪些

发布时间:2023-05-09 16:20:58 作者:iii
来源:亿速云 阅读:162

MybatisPlus中QueryWrapper的使用方法有哪些

目录

  1. 引言
  2. QueryWrapper简介
  3. 基本查询方法
  4. 复杂查询方法
  5. 链式调用
  6. LambdaQueryWrapper
  7. 总结

引言

MyBatis-Plus(简称MP)是MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,简化开发、提高效率。QueryWrapper是MyBatis-Plus中用于构建查询条件的核心类之一,它提供了丰富的API来构建复杂的SQL查询条件。本文将详细介绍QueryWrapper的使用方法,帮助开发者更好地利用MyBatis-Plus进行数据库操作。

QueryWrapper简介

QueryWrapper是MyBatis-Plus中用于构建查询条件的类,它继承自AbstractWrapper,提供了丰富的API来构建SQL查询条件。通过QueryWrapper,开发者可以方便地构建各种复杂的查询条件,而不需要手动编写SQL语句。

基本查询方法

eq

eq方法用于构建等于条件,即column = value

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三");
List<User> userList = userMapper.selectList(queryWrapper);

ne

ne方法用于构建不等于条件,即column != value

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ne("name", "张三");
List<User> userList = userMapper.selectList(queryWrapper);

gt

gt方法用于构建大于条件,即column > value

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);

ge

ge方法用于构建大于等于条件,即column >= value

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);

lt

lt方法用于构建小于条件,即column < value

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lt("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);

le

le方法用于构建小于等于条件,即column <= value

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.le("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);

between

between方法用于构建区间条件,即column BETWEEN value1 AND value2

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.between("age", 18, 30);
List<User> userList = userMapper.selectList(queryWrapper);

notBetween

notBetween方法用于构建不在区间内的条件,即column NOT BETWEEN value1 AND value2

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notBetween("age", 18, 30);
List<User> userList = userMapper.selectList(queryWrapper);

like

like方法用于构建模糊查询条件,即column LIKE '%value%'

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "张");
List<User> userList = userMapper.selectList(queryWrapper);

notLike

notLike方法用于构建不包含的模糊查询条件,即column NOT LIKE '%value%'

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notLike("name", "张");
List<User> userList = userMapper.selectList(queryWrapper);

likeLeft

likeLeft方法用于构建左模糊查询条件,即column LIKE '%value'

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "三");
List<User> userList = userMapper.selectList(queryWrapper);

likeRight

likeRight方法用于构建右模糊查询条件,即column LIKE 'value%'

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeRight("name", "张");
List<User> userList = userMapper.selectList(queryWrapper);

isNull

isNull方法用于构建为空的条件,即column IS NULL

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("email");
List<User> userList = userMapper.selectList(queryWrapper);

isNotNull

isNotNull方法用于构建不为空的条件,即column IS NOT NULL

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNotNull("email");
List<User> userList = userMapper.selectList(queryWrapper);

in

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

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

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

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

groupBy方法用于构建分组条件,即GROUP BY column

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.groupBy("age");
List<User> userList = userMapper.selectList(queryWrapper);

orderByAsc

orderByAsc方法用于构建升序排序条件,即ORDER BY column ASC

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByAsc("age");
List<User> userList = userMapper.selectList(queryWrapper);

orderByDesc

orderByDesc方法用于构建降序排序条件,即ORDER BY column DESC

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("age");
List<User> userList = userMapper.selectList(queryWrapper);

having

having方法用于构建分组后的过滤条件,即HAVING condition

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.groupBy("age").having("count(age) > 1");
List<User> userList = userMapper.selectList(queryWrapper);

复杂查询方法

and

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方法用于构建OR连接的条件,即condition1 OR condition2

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三").or().eq("name", "李四");
List<User> userList = userMapper.selectList(queryWrapper);

nested

nested方法用于构建嵌套条件,即(condition)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.nested(wrapper -> wrapper.eq("name", "张三").or().eq("name", "李四"));
List<User> userList = userMapper.selectList(queryWrapper);

apply

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方法用于构建存在子查询的条件,即EXISTS (sql)

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.exists("select 1 from user where age > 18");
List<User> userList = userMapper.selectList(queryWrapper);

notExists

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

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

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。

推荐阅读:
  1. SpringBoot整合MybatisPlus中模型压缩与加速的示例分析
  2. SpringBoot整合MybatisPlus如何实现字符串对比

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatisplus querywrapper

上一篇:springboot微服务项目集成html页面怎么实现

下一篇:SpringBoot怎么实现二维码扫码登录

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》