wapper介绍

- Wapper:条件构造抽象类- AbstractWapper:用于查询条件封装,生成 sql 的 where 条件- QueryWrapper:查询条件封装
- UpdateWrapper:Update 条件封装
- AbstractLambdaWrapper:使用Lambda语法- LambdaQueryWrapper:使用Lambda语法使用的查询Wrapper
- LambdaUpdateWrapper:Lambda 更新封装Wrapper
 
 
 
封装类
查询封装类使用示例
@Test  
public void test01() {  // 查询用户名包含a,年龄在20~30,邮箱信息不为null  QueryWrapper<User> queryWrapper = new QueryWrapper<>();  queryWrapper.like("user_name", "a")  .between("age",20, 30)  .isNotNull("email");  userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));  
}@Test  
public void test02() {  // 查询用户信息,按照年龄降序排序,若年龄相同,则按id升序排序  QueryWrapper<User> queryWrapper = new QueryWrapper<>();  queryWrapper.orderByDesc("age").orderByAsc("id");  userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));  
}
select字句封装
当需要查询指定字段时可以使用 select:
@Test  
public void test06 () {  // 查询用户的用户名、年龄、邮箱信息  QueryWrapper<User> queryWrapper = new QueryWrapper<>();  queryWrapper.select("user_name", "age", "email");  userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));  
}
子查询封装
@Test  
public void test07() {  // 查询 uid 小于等于100的用户信息  QueryWrapper<User> queryWrapper = new QueryWrapper<>();  queryWrapper.inSql("uid", "select uid from t_user where uid <= 100");  userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));  
}
删除使用示例
@Test  
public void test03() {  // 删除邮箱地址为 null 的用户信息  QueryWrapper<User> queryWrapper = new QueryWrapper<>();  queryWrapper.isNull("email");  int result = userMapper.delete(queryWrapper);  log.info("删除了:{}条数据", result);  
}
修改使用示例
@Test  
public void test04() {  // 将 (年龄大于20并且用户名中包含有a)或邮箱为null的用户信息修改  QueryWrapper<User> queryWrapper = new QueryWrapper<>();  queryWrapper.gt("age", 20)  .like("user_name", "a")  .or()  .isNull("email");  User user = new User();  user.setName("小明");  user.setEmail("123@qq.com");  int result = userMapper.update(user, queryWrapper);  log.info("修改了:{}条数据", result);  
}
condition组装条件
通过
condition条件,可以判断是否要使用该条件作为SQL语句
@Test  
public void test10() {  String username = "a";  Integer ageBegin = null;  Integer ageEnd = 30;  QueryWrapper<User> queryWrapper = new QueryWrapper<>();  queryWrapper.like(StringUtils.isNotBlank(username), "user_name", username) // 判断username 是否不为 空 null 空白符  .ge(ageBegin != null, "age", ageBegin) // 判断ageBegin 是否不为 空 null  .le(ageEnd != null, "age", ageEnd); // 判断ageEnd 是否不为 空 null  userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));  
}
修改封装类使用示例
@Test  
public void test08() {  // 将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改  UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();  updateWrapper.like("user_name", "a")  .and(i -> i.gt("age", 20).or().isNull("email"));  updateWrapper.set("user_name", "小黑").set("email", "123@qq.com");  userMapper.update(null, updateWrapper);  
}
Lambda封装类
LambdaQueryWrapper
@Test  
public void test11() {  String username = "a";  Integer ageBegin = null;  Integer ageEnd = 30;  LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();  queryWrapper.like(StringUtils.isNotBlank(username), User::getName, username)  .ge(ageBegin != null, User::getAge, ageBegin)  .le(ageEnd != null, User::getAge, ageEnd);  userMapper.selectList(queryWrapper).forEach(user -> log.info("用户信息:{}", user));
LambdaUpdateWrapper
@Test  
public void test12() {  // 将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改  LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();  updateWrapper.like(User::getName, "a")  .and(i -> i.gt(User::getAge, 20).or().isNull(User::getEmail));  updateWrapper.set(User::getName, "小黑").set(User::getEmail, "123@qq.com");  userMapper.update(null, updateWrapper);  
}
具体类方法手册