目录
1 wapper介绍

Wrapper: 条件构造抽象类,最顶端父类
AbstractWrapper:用于查询条件封装,生成sql的where条件
- QueryWrapper:查询条件封装
- UpdateWrapper:Update条件封装
- AbstractLambdaWrapper:使用Lambda语法
LambdaQueryWrapper:用于Lambda语法使用的查询Wrapper
LambdaUpdateWrapper:用于Lambda更新封装Wrapper
2 条件查询
2.1 组装查询条件
@Test
public void test01(){
//查询用户名包含a,年龄在20到30之间,邮箱信息不为null的用户信息
//SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 AND (user_name LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULL)
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("user_name", "a")
.between("age", 20, 30)
.isNotNull("email");
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
sql拼接如下:
==> Preparing: SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 AND (user_name LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULL)
==> Parameters: %a%(String), 20(Integer), 30(Integer)
<== Total: 0
2.2 组装排序条件
@Test
public void test02(){
//查询用户信息,按照年龄的降序排序,若年龄相同,则按照id升序排序
//SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 ORDER BY age DESC,uid ASC
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("age")
.orderByAsc("uid");
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
sql拼接如下:
==> Preparing: SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 ORDER BY age DESC,uid ASC
==> Parameters:
<== Columns: id, name, age, email, is_deleted
<==

本文详细介绍了MyBatisPlus中的条件构造类Wrapper的使用,包括QueryWrapper和UpdateWrapper,以及LambdaQueryWrapper和LambdaUpdateWrapper。通过实例展示了如何组装查询、排序、删除和更新条件,以及条件的优先级、子查询和条件表达式的使用。同时,演示了如何通过条件构造实现数据的增删改查操作,以及利用条件的组合优化查询效率。
最低0.47元/天 解锁文章
2104

被折叠的 条评论
为什么被折叠?



