条件构造器

我们写一些复杂的sql就可以使用它来替代!

isNotNull()不为空 ge()大于等于

查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于12

image-20200421171259541

1
2
3
4
5
6
7
8
9
@Test
void contextLoads() {
//查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于12
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.isNotNull("name")
.isNotNull("email")
.ge("age", 12);
userMapper.selectList(wrapper).forEach(System.out::println);//和我们刚才学习的map对比一下!
}

image-20200421171451333

eq()等于

查询名字为kylin年龄为3岁

image-20200421172120823

1
2
3
4
5
6
7
8
@Test
void test2() {
//查询名字为kylin
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "kylin").eq("age",3);
User user = userMapper.selectOne(wrapper);//查询一个数据。查询多个使用list或者map
System.out.println(user);
}

image-20200421172150526

between()在什么什么之间 [x,y]

查询年龄在20-30岁之间的用户

image-20200421172442529

1
2
3
4
5
6
7
8
@Test
void test3() {
//查询年龄在20-30岁之间的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.between("age", 20, 30);//年龄 区间
Integer count = userMapper.selectCount(wrapper);//返回个数
System.out.println(count);
}

image-20200421172530549

notLike()不包含 likeRight相当于sql语句中的like X%也就是以X开头 likeLeft相当于sql语句中的like %X也就是以X结尾

查询名字中不包含e和email以t开头的用户

image-20200421173054527

1
2
3
4
5
6
7
8
9
10
11
12
// 模糊查询 查询名字中不包含e和email以t开头的用户
@Test
void test4() {
// 查询年龄在 20 ~ 30 岁之间的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
// 左和右 t%
wrapper
.notLike("name", "e")
.likeRight("email", "t");//t%
List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);
maps.forEach(System.out::println);
}

image-20200421173231149

inSql()子查询

查询id小于3的用户数据

image-20200421174217479

1
2
3
4
5
6
7
8
@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);
}

image-20200421174723571

orderByAsc()升序排序orderByDesc()降序排序

查询用户塑胶通过id升序进行排序

image-20200421175710106