Java:MybatisPlus--条件构造器
1、条件构造器类别
①wrapper:抽象类,条件类的顶层,提供了一些获取和判断相关的方法。
②AbstractWrapper:抽象类,Wrapper的子类,提供了所有的条件相关方法。
③AbstractLambdaWrapper:抽象类,AbstractWrapper的子类,确定字段参数为方法引用类型
④QueryWrapper:AbstractWrapper的子类,如果需要传递String类型的字段信息,创建该对象
⑤LambdaQueryWrapper:AbstractLambdaWrapper的子类,如果我们需要传递方法引用方式的字段信息,创建该对象。
2、等值查询
测试:eq
@Test
void eq(){//1.创建QueryWrapper对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.设置条件,指定String字段名称和值lambdaQueryWrapper.eq(User::getName,"Jack");//3.使用条件完成查询User user = userMapper.selectOne(lambdaQueryWrapper);System.out.println(user);
}
测试:allEq
@Test
void allEq(){LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(User::getName,"Jone");lambdaQueryWrapper.eq(User::getAge,18);User user = userMapper.selectOne(lambdaQueryWrapper);System.out.println(user);
}
测试:ne
@Test
void ne(){//1.创建QueryWrapper对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.设置条件,指定String字段名称和值String name = "Jone";lambdaQueryWrapper.ne(User::getName,name);//3.使用条件完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
3、范围查询
gt lt
@Test
void gt(){//1.创建QueryWrapper对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.设置条件,指定字段名称和值Integer age = 18;lambdaQueryWrapper.gt(User::getAge,age);//3.使用条件完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
ge le
@Test
void ge(){//1.创建QueryWrapper对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.设置条件,指定字段名称和值Integer age = 18;lambdaQueryWrapper.ge(User::getAge,age);//3.使用条件完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
between notBetween
@Test
void between(){//1.创建 QueryWrapper 对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.设置条件,指定字段名称和值lambdaQueryWrapper.between(User::getAge,18,30);//3.使用条件完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
4、模糊查询
like、notLike、likeLeft、likeRight
@Test
void like(){//1.创建 QueryWrapper 对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.设置条件,指定字段名称和值lambdaQueryWrapper.like(User::getName,"J");//3.使用条件完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
5、判空查询
isNull isNotNull
@Test
void isNull(){//1.创建 QueryWrapper 对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.设置条件,指定字段名称lambdaQueryWrapper.isNull(User::getName);//3.使用条件完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
6、包含查询
in、notIn、inSql、notInSql
@Test
void in(){//1.创建 QueryWrapper 对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.设置条件,指定字段名称和值ArrayList<Integer> arrayList = new ArrayList<>();Collections.addAll(arrayList,18,20,21);lambdaQueryWrapper.in(User::getAge,arrayList);//3.使用条件完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
7、分组查询
groupBy
@Test
void groupBy(){//1.创建 QueryWrapper 对象QueryWrapper<User> queryWrapper = new QueryWrapper<>();//2.设置条件,指定字段名称和值queryWrapper.groupBy("age");queryWrapper.select("age,count(*) as field_count");//3.使用条件完成查询List<Map<String, Object>> maps = userMapper.selectMaps(queryWrapper);System.out.println(maps);
}
8、聚合查询
having
@Test
void having(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//分组字段queryWrapper.groupBy("age");//查询字段queryWrapper.select("age,count(*) as field_count");//聚合条件筛选queryWrapper.having("field_count = 1");List<Map<String, Object>> maps = userMapper.selectMaps(queryWrapper);System.out.println(maps);
}
9、排序查询
orderBy、orderByAsc、orderByDesc
@Test
void orderBy(){//1.创建 QueryWrapper 对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.设置条件,指定降序排序字段lambdaQueryWrapper.orderBy(true,true,User::getId);lambdaQueryWrapper.orderBy(true,false,User::getAge);//3.使用条件完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
10、逻辑查询
and是默认的、or、nested
@Test
void nested(){//1.创建 QueryWrapper 对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.构建条件查询语句lambdaQueryWrapper.nested(i -> i.eq(User::getName, "Billie").ne(User::getAge,22));//3.完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
11、自定义查询
apply
@Test
void apply(){//1.创建 QueryWrapper 对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.构建条件查询语句lambdaQueryWrapper.apply("id = 1");//3.完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
12、last查询
@Test
void last(){//1.创建 QueryWrapper 对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.构建条件查询语句lambdaQueryWrapper.last("limit 0,2");//3.完成查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
13、exists查询
exists、notExists
@Test
void exists(){//1.创建 QueryWrapper 对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.构建查询条件lambdaQueryWrapper.exists("select id from powershop_user where age = 18");//3.查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}
14、字段查询
@Test
void select(){//1.创建 QueryWrapper 对象LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();//2.构建查询条件lambdaQueryWrapper.select(User::getId,User::getName);//3.查询List<User> users = userMapper.selectList(lambdaQueryWrapper);System.out.println(users);
}