前面提到一些复杂的sql无法直接调用MyBatis-Plus提供的方法,需要借助条件构造器wapper,下面编写几个测试类,主要感受一下wapper的强大。
环境准备:

  1. public class User {
  2. @TableId(value = "id", type = IdType.ID_WORKER)
  3. private Long id;
  4. private String name;
  5. private String pwd;
  6. private Integer age;
  7. @TableLogic
  8. private Integer deleted;
  9. @TableField(fill = FieldFill.INSERT)
  10. private Date gmtCreate;
  11. @TableField(fill = FieldFill.INSERT_UPDATE)
  12. private Date gmtModified;
  13. @Version
  14. private Integer version;
  15. //构造器和setXxx、getXxx
  16. }

image.png

测试一

  1. @Test
  2. public void test1() {
  3. //查询name、age都不为null,而且年龄大于30岁的用户
  4. QueryWrapper<User> wrapper = new QueryWrapper<>();
  5. wrapper
  6. .isNotNull("name")
  7. .isNotNull("age")
  8. .ge("age", 30);
  9. //返回List集合-->selectList
  10. List<User> list = userMapper.selectList(wrapper);
  11. }

image.png

测试二

  1. @Test
  2. public void test2() {
  3. //查询name="阿离"的用户
  4. QueryWrapper<User> wrapper = new QueryWrapper<>();
  5. wrapper.eq("name", "阿离");
  6. //返回一个对象-->selectOne
  7. User user = userMapper.selectOne(wrapper);
  8. }

image.png

测试三

  1. @Test
  2. public void test3() {
  3. //查询年龄位于[18,25]的用户
  4. QueryWrapper<User> wrapper = new QueryWrapper<>();
  5. wrapper.between("age",18,25);
  6. //返回数据中符合条件的数据量-->selectCount
  7. Integer count = userMapper.selectCount(wrapper);
  8. }

image.png

测试四

  1. @Test
  2. public void test4() {
  3. //各种模糊查询
  4. QueryWrapper<User> wrapper = new QueryWrapper<>();
  5. wrapper
  6. .notLike("name", "张三")
  7. .likeRight("name", "李")
  8. .likeLeft("name", "离")
  9. .like("name", "阿离");
  10. //返回List<Map<String, Object>>-->selectMaps
  11. List<Map<String, Object>> mapList = userMapper.selectMaps(wrapper);
  12. }

image.png

测试五

    @Test
    public void test5() {
        //子查询
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.inSql("id", "select id from user where id<1422592632552742914");
        //返回List<Object>-->selectObjs
        List<Object> list = userMapper.selectObjs(wrapper);
    }

image.png

测试六

    @Test
    public void test6() {
        //排序
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.orderByAsc("id", "name");
        List<User> list = userMapper.selectList(wrapper);
    }

image.png
上面这些测试案例只是一些常用的条件构造,全面的条件构造参考官方文档。