动态条件查询QueryWrapper的使用

977人浏览 / 0人评论 / 添加收藏

一、queryWrapper介绍

queryWrapper是mybatis plus中实现查询的对象封装操作类,可以封装sql对象,包括where条件,order by排序,select哪些字段等等:

Wrapper:条件构造抽象类,最顶端父类;
AbstractWrapper:用于查询条件封装,生成sql的where条件;
AbstractLambdaWrapper:Lambda语法使用Wrapper统一处理解析lambda获取column。
LambdaQueryWrapper:用于lambda语法使用的查询Wrapper;
LambdaUpdateWrapper:Lambda更新封装Wrapper;
QueryWrapper:Entity对象封装操作类,不是用lambda;
UpdateWrapper:Update条件封装,用于Entity对象更新操作。

二、queryWrapper示例

2.1-案例一、根据name模糊查看未删除的用户列表信息

过滤条件:

name 用户名称 ,模糊查看
del_flag = 0
按照create_time创建时间降序
sql实现:

select * from t_user
where del_flag = 0
<if test ="name!=null and ''!=name">
   and name like concat('%',#{name},'%')
</if>
order by create_time desc
 

queryWrapper实现:

/**
* 案例一 根据name模糊查看未删除的用户列表信息
* @param name
* @return
*/
@RequestMapping("/list")
public Map<String,Object> getList(@RequestParam String name){
   Map<String,Object> result = new HashMap<>();

//构建一个查询的wrapper
   QueryWrapper<User> wrapper = new QueryWrapper<User>();
   //name不为空时,组装模糊查询条件
   wrapper.like(StringUtils.isNotBlank(name),"name",name);
   //未删除
   wrapper.eq("del_flag",0);
   //创建时间降序
   wrapper.orderByDesc("create_time");

   List<User> list = userMapper.selectList(wrapper);
   result.put("data",list);
   return result;
}
 

2.2-案例二、查看姓李的并且邮箱不为空的用户列表

sql实现:

select * from t_user
where del_flag = 0
and name like concat('李','%')
and email is not null
order by create_time desc


queryWrapper实现:
/**
* 案例二 查看姓张的并且邮箱不为空的用户列表
* @return
*/
@RequestMapping("/list2")
public Map<String,Object> getList2(){
   Map<String,Object> result = new HashMap<>();

   //构建一个查询的wrapper
   QueryWrapper<User> wrapper = new QueryWrapper<User>();
   //姓张的
   wrapper.likeRight("name","张");
   //邮箱不为空
   wrapper.isNotNull("email");
   //未删除
   wrapper.eq("del_flag",0);
   //创建时间降序
   wrapper.orderByDesc("create_time");

   List<User> list = userMapper.selectList(wrapper);
   result.put("data",list);
   return result;
}
 

2.3-案例三、年龄范围查询(20-30之间的)

sql实现:

select * from t_user
where del_flag=0
and age between 20 and 30
order by create_time desc

queryWrapper实现:

/**
* 案例三 年龄范围查询(20-30之间的)
* @return
*/
@RequestMapping("/list3")
public Map<String,Object> getList3(){
   Map<String,Object> result = new HashMap<>();

   //构建一个查询的wrapper
   QueryWrapper<User> wrapper = new QueryWrapper<User>();
   //年龄20-30之间的
   wrapper.between("age",20,30);
   //未删除
   wrapper.eq("del_flag",0);
   //创建时间降序
   wrapper.orderByDesc("create_time");

   List<User> list = userMapper.selectList(wrapper);
   result.put("data",list);
   return result;
}
 

 

全部评论