当前位置:   article > 正文

Day 09 (JAVA中的queryWrapper)_java querywrapper

java querywrapper

一、queryWrapper的介绍

queryWrapper是MyBatis Plus 中实现查询的对象封装操作类,可以封装SQL对象,包括where条件、orderby排序、select查询等字段。它们的关系如下:

 Wrapper:是条件构造抽象类,最顶端父类

AbstractWrapper:由于查询条件封装,生成SQL的where条件

AbstractLambdaWrapper:Lambda语法使用Wrapper统一处理解析lambda获取column

AbstractQueryWrapper:用于lambda语法使用的查询Wrapper

LambdaUpdateWrapper:Lambda更新封装Wrapper

QueryWrapper:Entity对象封装操作类,不是用lambda

UpdateWrapper:Update条件封装,用于Entity对象更新操作

二、queryWrapper实例:

数据如下:

在这里插入图片描述

 创建一个实体类:

  1. /**
  2. * @author qzz
  3. */
  4. @Data
  5. @TableName("t_user")
  6. public class User implements Serializable {
  7. private static final long serialVersionUID = 1L;
  8. /**
  9. * 用户id
  10. */
  11. @TableId(value="id", type = IdType.AUTO)
  12. private Integer id;
  13. /**
  14. * 名称
  15. */
  16. @TableField("name")
  17. private String name;
  18. /**
  19. * 年龄
  20. */
  21. @TableField("age")
  22. private Integer age;
  23. /**
  24. * 删除标识 0:正常 1:删除 默认0
  25. */
  26. @TableField("del_flag")
  27. private Integer del_flag;
  28. /**
  29. * 邮箱
  30. */
  31. @TableField("email")
  32. private String email;
  33. /**
  34. * 创建时间
  35. */
  36. @TableField(value = "create_time", fill = FieldFill.INSERT)
  37. private Date create_time;
  38. /**
  39. * 修改时间
  40. */
  41. @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
  42. private Date update_time;
  43. }

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

过滤条件:

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

SQL实现:

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

queryWrapper实现:

  1. /**
  2. * 案例一:根据name模糊查看未删除的用户列表信息
  3. * @param name
  4. * @return
  5. */
  6. @RequestMapping("/list")
  7. public Map<String,Object> getList(@RequestParam String name){
  8. Map<String,Object> result = new HashMap<>();
  9. //构建一个查询的wrapper
  10. QueryWrapper<User> wrapper = new QueryWrapper<User>();
  11. //name不为空时,组装模糊查询条件
  12. wrapper.like(StringUtils.isNotBlank(name),"name",name);
  13. //未删除
  14. wrapper.eq("del_flag",0);
  15. //创建时间降序
  16. wrapper.orderByDesc("create_time");
  17. List<User> list = userMapper.selectList(wrapper);
  18. result.put("data",list);
  19. return result;
  20. }

控制台结果:

在这里插入图片描述

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

SQL实现:

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

queryWrapper实现:

  1. /**
  2. * 案例二:查看姓张的并且邮箱不为空的用户列表
  3. * @return
  4. */
  5. @RequestMapping("/list2")
  6. public Map<String,Object> getList2(){
  7. Map<String,Object> result = new HashMap<>();
  8. //构建一个查询的wrapper
  9. QueryWrapper<User> wrapper = new QueryWrapper<User>();
  10. //姓张的
  11. wrapper.likeRight("name","张");
  12. //邮箱不为空
  13. wrapper.isNotNull("email");
  14. //未删除
  15. wrapper.eq("del_flag",0);
  16. //创建时间降序
  17. wrapper.orderByDesc("create_time");
  18. List<User> list = userMapper.selectList(wrapper);
  19. result.put("data",list);
  20. return result;
  21. }

控制台结果:

在这里插入图片描述

 

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

SQL实现:

  1. select * from t_user
  2. where del_flag=0
  3. and age between 20 and 30
  4. order by create_time desc

queryWrapper实现:

  1. /**
  2. * 案例三:年龄范围查询(20-30之间的)
  3. * @return
  4. */
  5. @RequestMapping("/list3")
  6. public Map<String,Object> getList3(){
  7. Map<String,Object> result = new HashMap<>();
  8. //构建一个查询的wrapper
  9. QueryWrapper<User> wrapper = new QueryWrapper<User>();
  10. //年龄20-30之间的
  11. wrapper.between("age",20,30);
  12. //未删除
  13. wrapper.eq("del_flag",0);
  14. //创建时间降序
  15. wrapper.orderByDesc("create_time");
  16. List<User> list = userMapper.selectList(wrapper);
  17. result.put("data",list);
  18. return result;
  19. }

控制台结果:

在这里插入图片描述

 

4、案例四:根据CreateTime查看当日的用户列表

SQL实现:

  1. select * from t_user
  2. where del_flag=0
  3. and DATE(create_time) = STR_TO_DATE('2021-08-13','%Y-%m-%d')
  4. order by create_time desc

queryWrapper实现:

  1. /**
  2. * 案例四:根据createTime查看当日的用户列表
  3. * @return
  4. */
  5. @RequestMapping("/list4")
  6. public Map<String,Object> getList4(@RequestParam String createTime){
  7. Map<String,Object> result = new HashMap<>();
  8. //构建一个查询的wrapper
  9. QueryWrapper<User> wrapper = new QueryWrapper<User>();
  10. //查询条件为创建时间
  11. wrapper.apply(StringUtils.isNotBlank(createTime),"DATE(create_time) = STR_TO_DATE('"+createTime+"','%Y-%m-%d')");
  12. //未删除
  13. wrapper.eq("del_flag",0);
  14. //创建时间降序
  15. wrapper.orderByDesc("create_time");
  16. List<User> list = userMapper.selectList(wrapper);
  17. result.put("data",list);
  18. return result;
  19. }

控制台结果:

在这里插入图片描述

 5、案例五:查看某一个时间段内的用户列标

SQL实现:

  1. select * from t_user
  2. where del_flag=0
  3. and DATE(create_time) >= STR_TO_DATE('2021-08-01','%Y-%m-%d')
  4. AND DATE(create_time) <= STR_TO_DATE('2021-08-13','%Y-%m-%d')
  5. order by create_time desc

queryWrapper实现:

  1. /**
  2. * 案例五:查看某个时间段内的用户列表
  3. * @return
  4. */
  5. @RequestMapping("/list5")
  6. public Map<String,Object> getList5(@RequestParam String startTime,@RequestParam String endTime){
  7. Map<String,Object> result = new HashMap<>();
  8. //构建一个查询的wrapper
  9. QueryWrapper<User> wrapper = new QueryWrapper<User>();
  10. //查询条件为创建时间
  11. wrapper.apply(StringUtils.isNotBlank(startTime),"DATE(create_time) >= STR_TO_DATE('"+startTime+"','%Y-%m-%d')");
  12. wrapper.apply(StringUtils.isNotBlank(endTime),"DATE(create_time) <= STR_TO_DATE('"+endTime+"','%Y-%m-%d')");
  13. //未删除
  14. wrapper.eq("del_flag",0);
  15. //创建时间降序
  16. wrapper.orderByDesc("create_time");
  17. List<User> list = userMapper.selectList(wrapper);
  18. result.put("data",list);
  19. return result;
  20. }

控制台结果:

在这里插入图片描述

 6、案例六:查询姓李的并且邮箱不能为空或者年龄大于16的用户列表

SQL实现:

  1. select * from t_user
  2. where del_flag=0
  3. and name like concat('李','%')
  4. and (email is not null or age>16)
  5. order by create_time desc

queryWrapper实现:

and方法嵌套使用

  1. /**
  2. * 案例六:查询姓李的并且邮箱不为空或者是年龄大于16的用户
  3. * @return
  4. */
  5. @RequestMapping("/list6")
  6. public Map<String,Object> getList6(){
  7. Map<String,Object> result = new HashMap<>();
  8. //构建一个查询的wrapper
  9. QueryWrapper<User> wrapper = new QueryWrapper<User>();
  10. //and方法嵌套
  11. wrapper.likeRight("name","李").and(
  12. userQueryWrapper -> userQueryWrapper.isNotNull("email")
  13. .or().lt("age",16)
  14. );
  15. //未删除
  16. wrapper.eq("del_flag",0);
  17. //创建时间降序
  18. wrapper.orderByDesc("create_time");
  19. List<User> list = userMapper.selectList(wrapper);
  20. result.put("data",list);
  21. return result;
  22. }

控制台结果:

在这里插入图片描述

7、案例七:查询ID号为1、2、3的用户列表

SQL实现:

  1. select * from t_user
  2. where del_flag=0
  3. and id in(1,2,3)
  4. order by create_time desc

queryWrapper实现:

  1. /**
  2. * 案例七:根据ids查看用户列表信息
  3. * @return
  4. */
  5. @RequestMapping("/list7")
  6. public Map<String,Object> getList7(@RequestParam String ids){
  7. Map<String,Object> result = new HashMap<>();
  8. //构建一个查询的wrapper
  9. QueryWrapper<User> wrapper = new QueryWrapper<User>();
  10. if(StringUtils.isNotBlank(ids)){
  11. //字符串转数组再转List
  12. Collection<String> collection = Arrays.asList(ids.split(","));
  13. //in方法
  14. wrapper.in(collection.size()>0,"id",collection);
  15. }
  16. //未删除
  17. wrapper.eq("del_flag",0);
  18. //创建时间降序
  19. wrapper.orderByDesc("create_time");
  20. List<User> list = userMapper.selectList(wrapper);
  21. result.put("data",list);
  22. return result;
  23. }

控制台结果: 

在这里插入图片描述

三、综合总结

queryWrapper.lt()——小于
queryWrapper.le()——小于等于
queryWrapper.gt()——大于
queryWrapper.ge()——大于等于
queryWrapper.eq()——等于
queryWrapper.ne()——不等于
queryWrapper.betweeen(“age”,10,20)——age在值10到20之间
queryWrapper.notBetweeen(“age”,10,20)——age不在值10到20之间
queryWrapper.like(“属性”,“值”)——模糊查询匹配值‘%值%’
queryWrapper.notLike(“属性”,“值”)——模糊查询不匹配值‘%值%’
queryWrapper.likeLeft(“属性”,“值”)——模糊查询匹配最后一位值‘%值’
queryWrapper.likeRight(“属性”,“值”)——模糊查询匹配第一位值‘值%’
queryWrapper.isNull()——值为空或null
queryWrapper.isNotNull()——值不为空或null
queryWrapper.in(“属性”,条件,条件 )——符合多个条件的值
queryWrapper.notIn(“属性”,条件,条件 )——不符合多个条件的值
queryWrapper.or()——或者
queryWrapper.and()——和
queryWrapper.orderByAsc(“属性”)——根据属性升序排序
queryWrapper.orderByDesc(“属性”)——根据属性降序排序
queryWrapper.inSql(“sql语句”)——符合sql语句的值
queryWrapper.notSql(“sql语句”)——不符合SQL语句的值
queryWrapper.esists(“SQL语句”)——查询符合SQL语句的值
queryWrapper.notEsists(“SQL语句”)——查询不符合SQL语句的值
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/43691
推荐阅读
相关标签
  

闽ICP备14008679号