【【尚硅谷】2022版MyBatisPlus教程(一套玩转mybatis-plus)】

查询用户名包含a,年龄在20到30之间,并且邮箱不为null的用户信息
SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 AND (username LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULL)
//查询用户名包含a,年龄在20到30之间,并且邮箱不为null的用户信息
@Test
public void test01(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("username","a")
.between("age",20,30)
.isNotNull("email");
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
测试结果:


这是因为数据库中,唯一一条满足条件的记录已经被我们逻辑删除了。
把第一条数据的逻辑删除手动改成0,再试一次
按年龄降序查询用户,如果年龄相同则按id升序排列
SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 ORDER BY age DESC,id ASC
//按年龄降序查询用户,如果年龄相同则按id升序排列
@Test
public void test02(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("age")
.orderByAsc("id");
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}
测试结果

删除email为空的用户
DELETE FROM t_user WHERE (email IS NULL)【因为我们设置了逻辑删除,所以只是更新操作】
//删除email为空的用户
@Test
public void test03(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("email");
int result = userMapper.delete(queryWrapper);
System.out.println("受影响的行数:" + result);
}
测试结果:

将(年龄大于20并且用户名中包含有a)或邮箱为null的用户信息修改
UPDATE t_user SET age=?, email=? WHERE (username LIKE ? AND age > ? OR email IS NULL)
//将(年龄大于20并且用户名中包含有a)或邮箱为null的用户信息修改
@Test
public void test04(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("username","a")
.gt("age",20)
.or()
.isNull("email");
User user = new User();
user.setAge(18);
user.setEmail("user@atguigu.com");
int result = userMapper.update(user,queryWrapper);
System.out.println("受影响的行数:" + result);
}
测试结果:

将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改
UPDATE t_user SET age=?, email=? WHERE (username LIKE ? AND (age > ? OR email IS NULL))
lambda表达式内的逻辑优先运算
//将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改
@Test
public void test05() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("username", "a")
.and(i -> i.gt("age", 20).or().isNull("email"));
User user = new User();
user.setAge(18);
user.setEmail("hah@atguigu.com");
int result = userMapper.update(user,queryWrapper);
System.out.println("受影响的行数:" + result);
}
测试结果

OK。
查询用户信息的username和age字段
SELECT username,age FROM t_user
//查询用户信息的username和age字段
@Test
public void test06(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("username","age");
List<Map<String , Object>> maps = userMapper.selectMaps(queryWrapper);
maps.forEach(System.out::println);
}

查询id小于等于3的用户信息
SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE (id IN
(select id from t_user where id <= 3))
//查询id小于等于3的用户信息
@Test
public void test07(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.inSql("uid","select uid from t_user where uid <= 3");
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
测试结果:

OK。