MyBatis-Plus Wrapper条件构造器查询大全

 

https://blog.csdn.net/weixin_38111957/article/details/91447509

MyBatis-Plus Wrapper条件构造器查询大全

IT贱男 2019-06-11 16:50:44  36133  收藏 66

分类专栏: Mybatis-Plus

版权

码农必备linux技能

本专栏主要从系统安装、入门命令讲解,会不定期更新公司服务架构安装使用教程(如:Es、MQ、jenkins等等)。还不会linux? 赶紧跟我一起学习吧!

IT贱男

¥29.90

订阅博主

一、引言

那么那么那么今天来说下MP中强大的条件查询功能。

本章是基于上个案例来讲的:MyBaits-Plus 快速入门案例

二、具体操作

首先来说说基本的查询吧,根据主键或者简单的查询条件进行查询。

 
  1. /**

  2. * 通过单个ID主键进行查询

  3. */

  4. @Test

  5. public void selectById() {

  6. User user = userMapper.selectById(1094592041087729666L);

  7. System.out.println(user);

  8. }

  9.  
  10. /**

  11. * 通过多个ID主键查询

  12. */

  13. @Test

  14. public void selectByList() {

  15. List<Long> longs = Arrays.asList(1094592041087729666L, 1094590409767661570L);

  16. List<User> users = userMapper.selectBatchIds(longs);

  17. users.forEach(System.out::println);

  18. }

  19.  
  20. /**

  21. * 通过Map参数进行查询

  22. */

  23. @Test

  24. public void selectByMap() {

  25. Map<String, Object> params = new HashMap<>();

  26. params.put("name", "张雨琪");

  27. List<User> users = userMapper.selectByMap(params);

  28. users.forEach(System.out::println);

  29. }

MyBatis-Plus还提供了Wrapper条件构造器,具体使用看如下代码:

 
  1. /**

  2. * 名字包含雨并且年龄小于40

  3. * <p>

  4. * WHERE name LIKE '%雨%' AND age < 40

  5. */

  6. @Test

  7. public void selectByWrapperOne() {

  8. QueryWrapper<User> wrapper = new QueryWrapper();

  9. wrapper.like("name", "雨").lt("age", 40);

  10. List<User> users = userMapper.selectList(wrapper);

  11. users.forEach(System.out::println);

  12. }

  13.  
  14. /**

  15. * 名字包含雨

  16. * 年龄大于20小于40

  17. * 邮箱不能为空

  18. * <p>

  19. * WHERE name LIKE '%雨%' AND age BETWEEN 20 AND 40 AND email IS NOT NULL

  20. */

  21. @Test

  22. public void selectByWrapperTwo() {

  23. QueryWrapper<User> wrapper = Wrappers.query();

  24. wrapper.like("name", "雨").between("age", 20, 40).isNotNull("email");

  25. List<User> users = userMapper.selectList(wrapper);

  26. users.forEach(System.out::println);

  27. }

  28.  
  29. /**

  30. * 名字为王性

  31. * 或者年龄大于等于25

  32. * 按照年龄降序排序,年龄相同按照id升序排序

  33. * <p>

  34. * WHERE name LIKE '王%' OR age >= 25 ORDER BY age DESC , id ASC

  35. */

  36. @Test

  37. public void selectByWrapperThree() {

  38. QueryWrapper<User> wrapper = Wrappers.query();

  39. wrapper.likeRight("name", "王").or()

  40. .ge("age", 25).orderByDesc("age").orderByAsc("id");

  41. List<User> users = userMapper.selectList(wrapper);

  42. users.forEach(System.out::println);

  43. }

  44.  
  45. /**

  46. * 查询创建时间为2019年2月14

  47. * 并且上级领导姓王

  48. * <p>

  49. * WHERE date_format(create_time,'%Y-%m-%d') = '2019-02-14' AND manager_id IN (select id from user where name like '王%')

  50. */

  51. @Test

  52. public void selectByWrapperFour() {

  53. QueryWrapper<User> wrapper = Wrappers.query();

  54. wrapper.apply("date_format(create_time,'%Y-%m-%d') = {0}", "2019-02-14")

  55. .inSql("manager_id", "select id from user where name like '王%'");

  56. List<User> users = userMapper.selectList(wrapper);

  57. users.forEach(System.out::println);

  58. }

  59.  
  60. /**

  61. * 查询王姓

  62. * 并且年龄小于40或者邮箱不为空

  63. * <p>

  64. * WHERE name LIKE '王%' AND ( age < 40 OR email IS NOT NULL )

  65. */

  66. @Test

  67. public void selectByWrapperFive() {

  68. QueryWrapper<User> wrapper = Wrappers.query();

  69. wrapper.likeRight("name", "王").and(qw -> qw.lt("age", 40).or().isNotNull("email"));

  70. List<User> users = userMapper.selectList(wrapper);

  71. users.forEach(System.out::println);

  72. }

  73.  
  74. /**

  75. * 查询王姓

  76. * 并且年龄大于20 、年龄小于40、邮箱不能为空

  77. * <p>

  78. * WHERE name LIKE ? OR ( age BETWEEN ? AND ? AND email IS NOT NULL )

  79. */

  80. @Test

  81. public void selectByWrapperSix() {

  82. QueryWrapper<User> wrapper = Wrappers.query();

  83. wrapper.likeRight("name", "王").or(

  84. qw -> qw.between("age", 20, 40).isNotNull("email")

  85. );

  86. List<User> users = userMapper.selectList(wrapper);

  87. users.forEach(System.out::println);

  88. }

  89.  
  90. /**

  91. * (年龄小于40或者邮箱不为空) 并且名字姓王

  92. * WHERE ( age < 40 OR email IS NOT NULL ) AND name LIKE '王%'

  93. */

  94. @Test

  95. public void selectByWrapperSeven() {

  96. QueryWrapper<User> wrapper = Wrappers.query();

  97. wrapper.nested(qw -> qw.lt("age", 40).or().isNotNull("email"))

  98. .likeRight("name", "王");

  99. List<User> users = userMapper.selectList(wrapper);

  100. users.forEach(System.out::println);

  101. }

  102.  
  103. /**

  104. * 查询年龄为30、31、32

  105. * WHERE age IN (?,?,?)

  106. */

  107. @Test

  108. public void selectByWrapperEight() {

  109. QueryWrapper<User> wrapper = Wrappers.query();

  110. wrapper.in("age", Arrays.asList(30, 31, 32));

  111. List<User> users = userMapper.selectList(wrapper);

  112. users.forEach(System.out::println);

  113. }

  114.  
  115. /**

  116. * 查询一条数据

  117. * limit 1

  118. */

  119. @Test

  120. public void selectByWrapperNine() {

  121. QueryWrapper<User> wrapper = Wrappers.query();

  122. wrapper.in("age", Arrays.asList(30, 31, 32)).last("limit 1");

  123. List<User> users = userMapper.selectList(wrapper);

  124. users.forEach(System.out::println);

  125. }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET异常设计原则

异常是使用.NET时必然会遇到的问题&#xff0c;但是&#xff0c;有太多的开发人员没有从API设计的角度考虑这个问题。在大部分工作中&#xff0c;他们自始至终都知道需要捕获什么异常以及哪些异常需要写入全局日志。如果你设计了可以让你正确使用异常的API&#xff0c;则可以显…

java 百度经纬度 转换为 高德经纬度 谷歌

https://lbs.amap.com/api/webservice/guide/api/convert/#convert https://restapi.amap.com/v3/assistant/coordinate/convert?locations116.481499,39.990475&coordsysgps&outputxml&key<用户的key> https://console.amap.com/dev/key/app https://conso…

方法的重写VS重载

方法的重写&#xff08;override&#xff09; 方法的重写 子类从父类中继承方法&#xff0c;有时&#xff0c;子类需要修改父类中定义的方法的实现&#xff0c;这称做方法的重写(method overriding)。“重写”的概念与“重载”相似&#xff0c;它们均是Java“多态”的技术之一&…

权衡微服务

很多开发团队已经认识到 微服务架构比单体架构更优越。但是也有其他团队感觉到这是一种消弱生产力的负担。就像任何软件架构&#xff0c;微服务架构同样有利弊。为了能做出一个明智的选择&#xff0c;你必须了解这些应用并将它们运用到你特定的环境中。 微服务的优势 具有边界的…

使用IDM下载,不适用默认浏览器下载

google浏览器是不能够安装的除非有v*p*n&#xff08;&#xff09; Firefox浏览器可以安装js脚本 推荐使用 1 google 扩展 IDMan628 扩展程序里面加 IDMGCExt.crx 2 扩展Tampermonkey 加Tampermonkey.crx 3 点击Tampermonkey 的仪表盘 右上角加按钮 百度网盘直接下载助手…

ASP.NET Core 中的那些认证中间件及一些重要知识点

前言 在读这篇文章之间&#xff0c;建议先看一下我的 ASP.NET Core 之 Identity 入门系列&#xff08;ASP.NET Core 之 Identity 入门&#xff08;一&#xff09;&#xff0c;ASP.NET Core 之 Identity 入门&#xff08;二&#xff09;&#xff0c;ASP.NET Core 之 Identity 入…

mybatis-plus 错误java.lang.NoClassDefFoundError: org/apache/velocity/context/Context

https://blog.csdn.net/qq_39609151/article/details/82855305 mybatis-plus 错误java.lang.NoClassDefFoundError: org/apache/velocity/context/Context Murphy_fly 2018-09-26 16:41:55 27168 收藏 15 分类专栏&#xff1a; 框架 版权 使用mybatis-plus自动生成文件的时…

向上类型转换VS向下类型转换

子类转换成父类时的规则: 将一个父类的引用指向一个子类的对象&#xff0c;称为向上转型(upcasting)&#xff0c;自动进行类型转换。此时通过父类引用调用的方法是子类覆盖或继承父类的方法&#xff0c;不是父类的方法。 此时通过父类引用变量无法调用子类特有的方法&#xff…

.NET 使用 RabbitMQ 图文简介

前言 最近项目要使用RabbitMQ&#xff0c;园里里面已经有很多优秀的文章&#xff0c;Rabbitmq官网也有.net实例。这里我尝试下图文并茂之形式记录下使用的过程。 安装 RabbitMQ是建立在erlang OTP平台下&#xff0c;因此在windows下需要下载并安装以下两个组件&#xff1a; 1. …

Springboot+MyBatis-plus+postgresSQL 的整合

https://blog.csdn.net/xuxiannian/article/details/99625085 SpringbootMyBatis-pluspostgresSQL 的整合 禛陌 2019-08-15 12:20:10 6752 收藏 7 分类专栏&#xff1a; 技术相关 文章标签&#xff1a; SpringbootMyBatis-pluspostgresSQL 版权 磨叨一下 MyBatis-plus 请…

使用Senparc.Weixin.WxOpen开发高可用的微信小程序

Senparc.Weixin SDK介绍 Senparc.Weixin SDk是目前.net平台上使用率最高的微信SDK&#xff0c;除硬件平台暂未发布以外覆盖了所有微信平台模块&#xff0c;自2013年免费开源起已经持续更新了4年&#xff0c;是GitHub上目前Star和Fork数最多的中国C#开源项目。 目前大多数模块都…

Java中的事务——JDBC事务和JTA事务

转载自 Java中的事务——JDBC事务和JTA事务 我的博客中曾经关于事务有过很多讨论&#xff0c;之前的事务介绍基本都是数据库层面的事务&#xff0c;本文来介绍一下J2EE中和事务相关的内容&#xff0c;在阅读本文之前&#xff0c;希望读者对分布式有一定的了解。 关于事务的基础…

IDEA使用笔记(八)——自动生成 serialVersionUID 的设置

Ihttps://www.cnblogs.com/godtrue/p/7674487.html https://www.cnblogs.com/godtrue/p/7674487.html DEA使用笔记&#xff08;八&#xff09;——自动生成 serialVersionUID 的设置 这个设置比较简单&#xff0c;也有一些博文已经写到了&#xff0c;为什么我还要写哪&#…

从事件和DDD入手来构建微服务

领域驱动设计&#xff08;Domain-Driven Design&#xff0c;DDD&#xff09;是一项很伟大的技术&#xff0c;它拉近了设计与程序实际所服务的领域&#xff0c;但是通常我们会关注结构&#xff0c;从而太早地做出决策&#xff0c;这并非DDD的本意。相反&#xff0c;在领域中&…

JTA 深度历险 - 原理与实现

转载自 JTA 深度历险 - 原理与实现 利用 JTA 处理事务 什么是事务处理 事务是计算机应用中不可或缺的组件模型&#xff0c;它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。关于事务最经典的示例莫过于信…

为了支持AOP的编程模式,我为.NET Core写了一个轻量级的Interception框架[开源]

ASP.NET Core具有一个以ServiceCollection和ServiceProvider为核心的依赖注入框架&#xff0c;虽然这只是一个很轻量级的框架&#xff0c;但是在大部分情况下能够满足我们的需要。不过我觉得它最缺乏的是针对AOP的支持&#xff0c;虽然这个依赖注入框架提供了扩展点使我们可以很…

装箱VS拆箱

我们一般将“基本数据类型转换成包装类”的过程叫做装箱&#xff0c;将“包装类转换成基本数据类型”的过程叫做拆箱。 装箱可以分为手动装箱和自动装箱&#xff1a; 拆箱也可以分为手动拆箱和自动拆箱&#xff1a;