【Java】mybatis-Plus LambdaQueryWrapper梳理 前言 为了更方便的实现动态 sql,Mybatis Plus 在其基础上扩展了 LambdaQueryWrapper,LambdaQueryWrapper 提供
为了更方便的实现动态 sql,Mybatis Plus 在其基础上扩展了 LambdaQueryWrapper,LambdaQueryWrapper 提供了更加简便的查询语法
,同时也避免了 SQL 注入
的风险。
LambdaQueryWrapper 实现了 QueryWrapper
的全部功能,并提供了基于 Lambda
表达式的查询方式,使得查询语法更加优雅。使用 LambdaQueryWrapper,可以方便的实现各种查询条件的拼接,如 where
、and
、or
、in
、like
、between
等条件。
LambdaQueryWrapper 通过函数式编程的方式,提供了多种方法用于实现各种查询条件的拼接
,这些方法包括 eq、ne、gt、ge、lt、le、in、notIn、like、notLike、between、notBetween、isNull、isNotNull 等。
LambdaQueryWrapper 和 QueryWrapper 都是 Mybatis Plus 中的查询条件封装类,其中 LambdaQueryWrapper 是基于 Lambda 表达式的实现,而 QueryWrapper 是基于字符串
的实现。它们的优缺点如下:
避免手写字符串
的繁琐
和容易出错
;编译期间就能够捕获类型错误
,避免运行时出现类型错误
;支持链式调用
,支持多个条件之间的 and 和 or 关系组合,支持子查询等复杂查询操作。可能存在一些性能问题
,在大数据量查询时可能会影响查询性能。不需要解析 Lambda 表达式
;支持 SQL 函数等更多高级查询操作
;适合兼容
和扩展
。手写 SQL 字符串容易出错
,并且不易于维护
和修改
;容易受到 SQL 注入攻击
,需要特别注意防范
;编译期不能捕获类型错误
,需要在运行时才能发现类型错误。综上推荐使用 LambdaQueryWrapper(此外,LambdaQueryWrapper 还具有良好的兼容性和扩展性,可以轻松适应不同的业务需求,提高开发效率和代码质量)。
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.eq(User::getUsername, "张三") .and(w -> w.between(User::getAge, 18, 30) .or().eq(User::getGender, 1)) .orderByDesc(User::getCreateTime);List<User> userList = userMapper.selectList(wrapper);
首先创建了一个 LambdaQueryWrapper 对象,然后通过 eq 方法添加一个等于条件,表示查询用户名为“张三”的用户。接着,使用 and 方法添加一个条件组,该组包含了一个 between 条件和一个 or 条件,分别表示查询年龄在 18 到 30 之间的用户,或者查询性别为 1 的用户。注意,条件组中的多个条件之间默认是 and 的关系,可以通过 or 方法切换为 or 的关系。最后,使用 orderByDesc 方法对查询结果进行排序,按照创建时间倒序排列。
使用 LambdaQueryWrapper 进行查询时,还可以通过 select 方法来自定义查询字段,从而实现对查询结果的灵活控制。
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.eq(User::getAge, 20) .select(User::getId, User::getUserName, User::getAge);List<User> userList = userMapper.selectList(wrapper);
首先通过 LambdaQueryWrapper 对象创建了一个查询条件,然后使用 eq
方法添加了一个等于条件
,表示查询年龄为 20 的用户。接着,通过 select 方法来自定义查询字段,只查询 id、username、age 三个字段,这些字段是以逗号分隔的字符串形式传入的。最后,调用 selectList 方法执行查询操作,得到查询结果。
来源地址:https://blog.csdn.net/weixin_43874301/article/details/129612189
--结束END--
本文标题: 【Java】Mybatis Plus LambdaQueryWrapper梳理
本文链接: https://www.lsjlt.com/news/383453.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0