前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis-Plus Wrapper条件构造器查询大全

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

作者头像
kirin
发布2021-01-12 14:37:28
8380
发布2021-01-12 14:37:28
举报
文章被收录于专栏:Kirin博客

一、引言

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

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

二、具体操作

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

代码语言:javascript
复制
  1. /**
  2. * 通过单个ID主键进行查询
  3. */
  4. @Test
  5. public void selectById() {
  6. User user = userMapper.selectById(1094592041087729666L);
  7. System.out.println(user);
  8. }
  9. /**
  10. * 通过多个ID主键查询
  11. */
  12. @Test
  13. public void selectByList() {
  14. List<Long> longs = Arrays.asList(1094592041087729666L, 1094590409767661570L);
  15. List<User> users = userMapper.selectBatchIds(longs);
  16. users.forEach(System.out::println);
  17. }
  18. /**
  19. * 通过Map参数进行查询
  20. */
  21. @Test
  22. public void selectByMap() {
  23. Map<String, Object> params = new HashMap<>();
  24. params.put(“name”, “张雨琪”);
  25. List<User> users = userMapper.selectByMap(params);
  26. users.forEach(System.out::println);
  27. }
代码语言:javascript
复制

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

代码语言:javascript
复制
  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. * 年龄大于20小于40
  16. * 邮箱不能为空
  17. * <p>
  18. * WHERE name LIKE ‘%雨%’ AND age BETWEEN 20 AND 40 AND email IS NOT NULL
  19. */
  20. @Test
  21. public void selectByWrapperTwo() {
  22. QueryWrapper<User> wrapper = Wrappers.query();
  23. wrapper.like(“name”, “雨”).between(“age”, 20, 40).isNotNull(“email”);
  24. List<User> users = userMapper.selectList(wrapper);
  25. users.forEach(System.out::println);
  26. }
  27. /**
  28. * 名字为王性
  29. * 或者年龄大于等于25
  30. * 按照年龄降序排序,年龄相同按照id升序排序
  31. * <p>
  32. * WHERE name LIKE ‘王%’ OR age >= 25 ORDER BY age DESC , id ASC
  33. */
  34. @Test
  35. public void selectByWrapperThree() {
  36. QueryWrapper<User> wrapper = Wrappers.query();
  37. wrapper.likeRight(“name”, “王”).or()
  38. .ge(“age”, 25).orderByDesc(“age”).orderByAsc(“id”);
  39. List<User> users = userMapper.selectList(wrapper);
  40. users.forEach(System.out::println);
  41. }
  42. /**
  43. * 查询创建时间为2019年2月14
  44. * 并且上级领导姓王
  45. * <p>
  46. * WHERE date_format(create_time,’%Y-%m-%d’) = ‘2019-02-14’ AND manager_id IN (select id from user where name like ‘王%’)
  47. */
  48. @Test
  49. public void selectByWrapperFour() {
  50. QueryWrapper<User> wrapper = Wrappers.query();
  51. wrapper.apply(“date_format(create_time,’%Y-%m-%d’) = {0}”, “2019-02-14”)
  52. .inSql(“manager_id”, “select id from user where name like ‘王%'”);
  53. List<User> users = userMapper.selectList(wrapper);
  54. users.forEach(System.out::println);
  55. }
  56. /**
  57. * 查询王姓
  58. * 并且年龄小于40或者邮箱不为空
  59. * <p>
  60. * WHERE name LIKE ‘王%’ AND ( age < 40 OR email IS NOT NULL )
  61. */
  62. @Test
  63. public void selectByWrapperFive() {
  64. QueryWrapper<User> wrapper = Wrappers.query();
  65. wrapper.likeRight(“name”, “王”).and(qw -> qw.lt(“age”, 40).or().isNotNull(“email”));
  66. List<User> users = userMapper.selectList(wrapper);
  67. users.forEach(System.out::println);
  68. }
  69. /**
  70. * 查询王姓
  71. * 并且年龄大于20 、年龄小于40、邮箱不能为空
  72. * <p>
  73. * WHERE name LIKE ? OR ( age BETWEEN ? AND ? AND email IS NOT NULL )
  74. */
  75. @Test
  76. public void selectByWrapperSix() {
  77. QueryWrapper<User> wrapper = Wrappers.query();
  78. wrapper.likeRight(“name”, “王”).or(
  79. qw -> qw.between(“age”, 20, 40).isNotNull(“email”)
  80. );
  81. List<User> users = userMapper.selectList(wrapper);
  82. users.forEach(System.out::println);
  83. }
  84. /**
  85. * (年龄小于40或者邮箱不为空) 并且名字姓王
  86. * WHERE ( age < 40 OR email IS NOT NULL ) AND name LIKE ‘王%’
  87. */
  88. @Test
  89. public void selectByWrapperSeven() {
  90. QueryWrapper<User> wrapper = Wrappers.query();
  91. wrapper.nested(qw -> qw.lt(“age”, 40).or().isNotNull(“email”))
  92. .likeRight(“name”, “王”);
  93. List<User> users = userMapper.selectList(wrapper);
  94. users.forEach(System.out::println);
  95. }
  96. /**
  97. * 查询年龄为30、31、32
  98. * WHERE age IN (?,?,?)
  99. */
  100. @Test
  101. public void selectByWrapperEight() {
  102. QueryWrapper<User> wrapper = Wrappers.query();
  103. wrapper.in(“age”, Arrays.asList(30, 31, 32));
  104. List<User> users = userMapper.selectList(wrapper);
  105. users.forEach(System.out::println);
  106. }
  107. /**
  108. * 查询一条数据
  109. * limit 1
  110. */
  111. @Test
  112. public void selectByWrapperNine() {
  113. QueryWrapper<User> wrapper = Wrappers.query();
  114. wrapper.in(“age”, Arrays.asList(30, 31, 32)).last(“limit 1”);
  115. List<User> users = userMapper.selectList(wrapper);
  116. users.forEach(System.out::println);
  117. }
代码语言:javascript
复制
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、引言
  • 二、具体操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档