tkMapper之使用Weekend拼接条件进行条件查询

  • 0. 引入
  • 1. andEqualTo
  • 2. andIn
  • 3. andNotEqualTo
  • 4. andNotIn
  • 5. andGreaterThanOrEqualTo
  • 6. andLike
  • 7. 总结

0. 引入

我们在这里使用StudentInfo实体类来进行举例:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StudentInfo {@Idprivate Long id;/*** 姓名*/private String name;/*** 手机号*/private String mobile;/*** 学号*/private String studentId;/*** 班级编号*/private String classId;/*** 创建时间*/private Date ctime;/*** 更新时间*/private Date mtime;/*** 删除标志 0:未删除 1:删除*/private Integer deleted_status;
}

1. andEqualTo

使用andEqualTo语句,相当于使用where 字段名 = 某值SQL语句

如果我们想查询班级编号为12345678的学生,可以这样写:

Weekend<StudentInfo> weekend = Weekend.of(StudentInfo.class);
WeekendCriteria<StudentInfo, Object> weekendCriteria = weekend.weekendCriteria();
weekendCriteria.andEqualTo(StudentInfo::getClassId, "12345678");
weekendCriteria.andEqualTo(StudentInfo::getdeletedStatus, 0);
List<StudentInfo> infoList = studentInfoMapper.selectByExample(weekend);

因为预期能够查询到多名学生信息,因此应该使用selectByExample,并使用List来接收返回信息;

2. andIn

使用andIn语句,相当于使用where 字段名 in 某值区间SQL语句

如果我们想在学生班级编号为12345678的基础上,查询出学号为000100020003的同学,那么可以这样写:

Weekend<StudentInfo> weekend = Weekend.of(StudentInfo.class);
WeekendCriteria<StudentInfo, Object> weekendCriteria = weekend.weekendCriteria();
weekendCriteria.andEqualTo(StudentInfo::getClassId, "12345678");
List<String> studentIdList = Arrays.asList("0001", "0002", "0003");
weekendCriteria.andIn(StudentInfo::getStudentId, studentIdList);
weekendCriteria.andEqualTo(StudentInfo::getdeletedStatus, 0);
List<StudentInfo> infoList = studentInfoMapper.selectByExample(weekend);

3. andNotEqualTo

刚好与andEqualTo相反;

4. andNotIn

刚好与andIn相反;

5. andGreaterThanOrEqualTo

顾名思义,这个是大于等于,也可以用来按照数据的修改日期进行过滤,写法如下:

weekendCriteria.andGreaterThanOrEqualTo(StudentInfo::getMtime, DateUtils.transferString2Date(LocalDate.now().toString()));

其中,DateUtils.transferString2Date方法可以参考我的另一篇文章:将String转为date,方便快捷;

6. andLike

可以使用andLike进行模糊查询,但是要注意,模糊查询会进行全表扫描,速度缓慢,极易造成慢查询(关于慢查询,可以参考我的另一篇文章:什么是慢查询?如何优化?);

如果我们想查找所有的名字中带有的同学信息,可以这样写:

Weekend<StudentInfo> weekend = Weekend.of(StudentInfo.class);
WeekendCriteria<StudentInfo, Object> weekendCriteria = weekend.weekendCriteria();
weekendCriteria.andLike(StudentInfo::getName, "%" + "红" + "%");
weekendCriteria.andEqualTo(StudentInfo::getdeletedStatus, 0);
List<StudentInfo> infoList = studentInfoMapper.selectByExample(weekend);

如果数据库中要进行大量的模糊搜索、文本匹配,可以考虑使ElasticSearchElasticSearch是一个分布式、高性能、高可用、可伸缩、RESTful 风格的搜索和数据分析引擎。

7. 总结

在查询条件比较多的时候,我们可以灵活地将各个条件拼在一起,tkMapper让我们在最大程度上避免了手写SQL语句,极大地提升了我们的开发效率。

tkMapper之使用Weekend拼接条件进行条件查询相关推荐

  1. vue 之url拼接 根据选择条件动态修改url地址

    vue 之url拼接 根据选择条件动态修改url地址 这里写的是某个项目中的一部分实现代码.. 如果需要学习 常见的动态路由可以看这篇文章:https://blog.csdn.net/ws199002 ...

  2. mysql高级查询之多条件的过滤查询

    一.什么是高级查询: ① 多条件的过滤查询 简单说,即拼接sql语句,在sql查询语句之后使用: where 条件1 and/or 条件2 and/or 条件3 - ② 分页查询 二.多条件过滤查询: ...

  3. mysql多条件匹配模糊查询

    mysql中通常的模糊查询使用like语句,但是有时候需要匹配多个条件进行模糊查询,like就无法满足了,比图所示,我们需要查询content字段中包含建设和统计的字段,like语句就无法满足了 所以 ...

  4. 什么是Karush-Kuhn-Tucker 最优化条件 (KKT 条件) 三个人名 独立发现的最优化条件

    Karush-Kuhn-Tucker 最优化条件 (KKT 条件) 一般地,一个最优化数学模型能够表示成下列标准形式: 所谓 Karush-Kuhn-Tucker 最优化条件,就是指上式的最小点 x* ...

  5. Spring Data JPA 复杂/多条件组合分页查询

    推荐视频: http://www.icoolxue.com/album/show/358 public Map<String, Object> getWeeklyBySearch(fina ...

  6. spring data jpa实现有条件的分页查询功能

    spring data jpa实现有条件的分页查询功能 前端部分代码.发送请求: $('#grid').datagrid({iconCls: 'icon-forward',fit: true,bord ...

  7. 外连接就是允许不满足条件的字段查询出来

    外连接就是允许不满足条件的字段查询出来 转载于:https://www.cnblogs.com/classmethond/p/10129069.html

  8. mysql null 查询条件_MySql当查询条件为空时不作为条件查询

    之前遇到一个很麻烦的条件查询.就是有很多个条件,并且条件可能有,也有可能没有.又不是像mybatis那样又专门的SQL.xml文件,需要自己写sql文.这种情况下,需要去判断每个条件是不是为空,后来发 ...

  9. MongoDB多条件分组聚合查询

    MongoDB多条件分组聚合查询 1.样例数据 {"_id" : ObjectId("5fa13fb76c3107345a82c047"),"_cla ...

最新文章

  1. Leader晋升失败,CTO说,没有商业敏感度,迟早被淘汰
  2. Pycharm回退操作+常用批量操作
  3. 前端获取浏览器标识_浏览器缓存机制
  4. 全球及中国水深测量声呐行业应用前景及未来投资决策建议报告2022-2027年
  5. 【学习笔记】分析函数(开窗函数)
  6. 坚持c++,真正掌握c++(4)
  7. 2019ICPC(上海) - Light bulbs(离散化+差分)
  8. 提高java效率_提高Java编程效率的一个技巧
  9. 数学家眼里的相同与不同
  10. C#面试题 之 判断质数
  11. Opencv实现多幅图片拼接在一起
  12. jquery的一点点认识
  13. vue富文本编辑器中上传图片
  14. 计算机维护费入什么会计科目,金税盘技术维护费计入什么科目_增值税
  15. php什么是耦合关系,什么是耦合
  16. excel取消密码_【Excel神技能】如何锁定Excel表中的公式,防止被修改?
  17. 深入理解5G SSB协议
  18. 计算机声音音乐小星星,迷你世界电路音乐教学 小星星音乐电路
  19. hexo+yilia进行SEO优化
  20. .net framework 4.0 在 VS2010 安装目录下位置 dotNetFx40_Full_x86_x64.exe在磁盘哪个目录?...

热门文章

  1. 说一说Windows严重安全漏洞CVE-2020-0601的原理
  2. linux ps 查看进程命令
  3. 支付漏洞的三种常见类型
  4. 命令行选项解析函数(C语言):getopt()和getopt_long()【转】
  5. 微星(MSI)笔记本安装ubuntu+win双系统
  6. 关于Redis分片机制说明
  7. 长周期行业-航运(1)-波罗的海指数高峰历史
  8. mysql federated 插件,通过mysql的federated插件实现dblink功能
  9. C++:实现量化可转换债券测试实例
  10. 数据埋点方案及注意事项