在mybatis-plus中,条件构造器(Wrapper)是非常重要的
我们写一些复杂的 SQL 就可以使用它来代替!
案例一
查询 name
不能为空用户,并且邮箱不能为空,并且年龄大于22岁,使用 isNotNull
.ge :表示大于
@Test
void contextLoads(){
// 查询 name 不能为空用户,并且邮箱不为空的用户,年龄大于等于12
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper
.isNotNull("name") // 名字不为空
.isNotNull("email") // 邮件不为空
.ge("age", 22); // 年龄大于12的
userMapper.selectList(wrapper).forEach(System.out::println);
}
案例二
查询 name
等于 xxx
使用 .eq
@Test
void test2(){
// 查询名字等于 XX 的
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name","ABCD");
User user = userMapper.selectOne(wrapper);
System.out.println(user);
}
案例三
查询 age
在范围 20——22之间的 between("age",20,22)
@Test
void test3(){
// 查询年龄在 20——22之间的
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.between("age",20,22); // 区间
Integer count = userMapper.selectCount(wrapper);
System.out.println(count); // 查询结果数
}
案例四——模糊查询
// 模糊查询
@Test
void test4(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper
.notLike("name", "A") // 姓名中含有A或者a的
.likeRight("email", "t"); // 代表意思为 t%
List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);
maps.forEach(System.out::println);
}
案例五
id
在子查询中查出来
@Test
void test5(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
// id 在子查询中查出来
wrapper.inSql("id", "select id from user where id < 3");
List<Object> objects = userMapper.selectObjs(wrapper);
objects.forEach(System.out::println);
}
案例六
通过 id
进行排序
orderByDesc
降序 orderByAsc
升序
// 测试六
@Test
void test6(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
// 通过 id 进行排序
wrapper.orderByDesc("id"); // 降序排序
wrapper.orderByAsc("id"); // 升序排列
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}