java 如何实现多条件筛选,JAVA-日常工作解决的bug2-多选条件筛选
业务场景:在用户轨迹上增加筛选功能,实现根据标签1和2来筛选
解决思路:在原有数据上增加接收前端的数据的字段,然后在controller层处理字段的信息,然后分别增加条件进行判断实现筛选功能--只写下我修改的部分(此文章的目的就是为了在日常中查缺补漏,便于日后的复习和学习)
代码实现:
1.在dao层实现字段增加来接收前端的数据(和前端人员沟通确定参数的形式)
2.在实现层对条件2实现筛选if (!StringUtil.isEmpty(params.getType())){
String[] str2 = params.getType().split(",");
Set filter = new HashSet<>();
for (String type : str2) {
filter.add(type);}
query.addMustTerm(new AbstractTermV2.MustMultTerm("deviceOs",filter));
}
3.在controller增加筛选条件long total = 0;
SimpleQuery.SimpleResponse rumResponse = null;
//浏览器
if(!StringUtil.isEmpty(params.getTermType())) {
String n = "浏览器";
String[] str = params.getTermType().split(",");
Set termType = new HashSet<>();
for (String string : str) {
termType.add(string);
}
if (termType.contains(n)) {
rumResponse = queryRum(params, cluster.keySet());
total = rumResponse.getTotal();
}
}
rumResponse = queryRum(params, cluster.keySet());
total = rumResponse.getTotal();
在上面的业务实现过程中,所涉及的知识点是后端如何接收前端的数据,Java中使用.split()的方法,以及集合遍历的知识:后端接收前端数据(https://blog.csdn.net/justry_...)
1-1:后端参数是一个对象,且该参数前是以@RequestBody修饰的,那么前端传递json参数时,必须满足以下要求:
后端@RequestBody注解对应的类在将HTTP的输入流(含请求体)装配到目标类(即:@RequestBody后面的类)时,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合(或可转换为)实体类的对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。
1-2:json字符串中,如果value为""的话,后端对应属性如果是String类型的,那么接受到的就是"",如果是后端属性的类型是Integer、Double等类型,那么接收到的就是null。
1-3:json字符串中,如果value为null的话,后端对应收到的就是null
1-4:如果某个参数没有value的话,在传json字符串给后端时,要么干脆就不把该字段写到json字符串中;要么写value时, 必须有值,null 或""都行。千万不能有类似"stature":,这样的写法,如{"":,--->X
"":null,--->正确
"":""---->正确}
@RequestBody直接以String接收前端传过来的json数据:
后端对应的Controller:
使用PostMan测试:
2.遍历集合的方法
参考:https://www.jb51.net/article/...
3.split()的方法使用
使用此方法返回的是一个数组(以特定的格式分隔后的数组)
特殊情况有 * ^ : | . \
在使用这些为分隔条件是需注意必须使用转义符即\加以转义,然后如果使用多个分隔符则需要借助 | 符号,如二所示,但需要转义符的仍然要加上分隔符进行处理
参考:https://www.cnblogs.com/mingf...
java 如何实现多条件筛选,JAVA-日常工作解决的bug2-多选条件筛选相关推荐
- java redis缓存工具类_util: 对日常工作中常见的工具类进行打包:
1、数据库:DBUtil工具类
2、Redis缓存:JedisUtil工具类...
/** * 功能:使用原始SQL查询单条记录 * 返回每条记录封装到Map */ public static void demo1_1() { DBUtil db = new DBUtil(); tr ...
- java多按钮筛选条件_Excel办公技巧:如何对表格数据进行自定义筛选?
这篇文章和大家分享对表格数据进行自定义筛选的两种方法. 应用场景 下图表格中$A$2:$B$10单元格为筛选数据区域,我们想在其中筛选出姓"春"或者姓"夏"同时 ...
- java数组 序列化_程序猿的日常——Java基础之clone、序列化、字符串、数组
其实Java还有很多其他的基础知识,在日常工作技术撕逼中也是经常被讨论的问题. 深克隆与浅克隆 在Java中创建对象有两种方式: 一种是new操作符,它创建了一个新的对象,并把对应的各个字段初始化成默 ...
- Java快速入门学习笔记4 | Java语言中的if条件语句
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
- JAVA 8 lambda 表达式实现按某个属性值查找对象集合中符合条件的对象
转载自:https://www.cnblogs.com/lindsayYang/p/9843599.html JAVA 8 lambda 表达式实现按某个属性值查找对象集合中符合条件的对象 当前的需求 ...
- Java入坑指南,学Java需要具备哪些前提条件?
很多零基础的学员对于学Java比较迷茫,想通过学Java掌握一技之长,却不知道入门需要具备哪些条件?不知道怎么去学习? 下面详细来和大家聊聊该怎么学习Java: 首先,要对Java语言感兴趣,兴趣是最 ...
- JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)
Java流程控制语句 本博文将对JAVA中组成各种结构的控制语句进行重点介绍,主要内容是区别于C/C++中的流程控制语句的重点解析. 1.顺序语句 顺序结构中的语句可分为:表达式语句.空语句和复合语句 ...
- JAVA程序员的日常工作是什么?一文告诉知道!
由于Java的企业需求热度,想学习Java并获得就业安排的学员也只增不减.而对于Java工程师来说,每天的工作内容是怎样的呢?本篇带大家了解一下Java开发者的日常工作,希望会有所收获. 首先对于一个 ...
- JAVA程序员的日常工作是什么?一文告诉知道
由于Java的企业需求热度,想学习Java并获得就业安排的学员也只增不减.而对于Java工程师来说,每天的工作内容是怎样的呢?本篇带大家了解一下Java开发者的日常工作,希望会有所收获. 首先对于一个 ...
最新文章
- Adobe源码泄漏?3行代码搞定,Flash动画无缝导入Android/iOS/cocos2dx(二)
- Eclipse 高亮显示
- a为数组名。sizeof(a)和sizeof(a)有什么区别?结果是?
- mysql用if判断关联的表_mysql表连接,子查询以及if判断
- 巧用css text-indent减小中文标点符号的占位大小
- 【常用】加载配置文件管理资源路径
- 横竖三个数的和相等_怎样证明 0.999… = 1?数值上是相等的,那么两者的区别是什么?...
- JAVA网络编程Socket常见问题 【长连接专题】
- jquery Fancybox使用教程
- Update your Twitter status using php
- 内核同步机制-读写信号量(rw_semaphore)
- centos6.5 安装mysql5.6多实例(多配置文件)
- 扫描仪twain驱动是什么_扫描仪无法显示怎么办 扫描仪无法显示解决方法【详解】...
- 工作2年跳槽阿里,面试官会问哪些?(免费领取Java面试题)
- 【侯捷】C++ STL
- 最左推导和最右推导,语法树,二义性文法
- word表格换页自动续前表的方法
- 读《MacTalk·人生元编程》及Mac常用软件
- MOS管栅极电阻的功耗该如何计算
- PPa-HA/NH2/NHS/MAL焦脱镁叶绿酸-a修饰叶酸/氨基/活性酯/马来酰亚胺的反应
热门文章
- 小红书投放怎么变现?品牌做小红书的变现效果好吗
- 如何快速查找BUG?
- 数字图像处理第二章——数字图像基础
- 丝线行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 20191207-CHKDSK命令修复磁盘教程
- slider wpf 垂直_继续聊WPF——Slider控件
- 王家族字辈(我的家族字辈)
- linux最多多少主分区,Linux为什么最多能分4个四个主分区
- Win10系统繁体字输入切换为简体字快捷键
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):的三种解决方式