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


    转:

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

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

    一、引言

    那么那么那么今天来说下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. }
  • 相关阅读:
    web(零)---tornado使用
    web(一)----tornado nginx配置
    pb- 使用
    Python排序算法之直接插入排序
    敏捷测试中发现的一些问题及改进办法
    加密算法
    共享内存与存储映射(mmap)
    mysql索引的性能分析
    mysql索引
    Innodb的存储及缓存
  • 原文地址:https://www.cnblogs.com/libin6505/p/14017042.html
Copyright © 2020-2023  润新知