业务场景:在用户轨迹上增加筛选功能,实现根据标签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-多选条件筛选相关推荐

  1. java redis缓存工具类_util: 对日常工作中常见的工具类进行打包: 1、数据库:DBUtil工具类 2、Redis缓存:JedisUtil工具类...

    /** * 功能:使用原始SQL查询单条记录 * 返回每条记录封装到Map */ public static void demo1_1() { DBUtil db = new DBUtil(); tr ...

  2. java多按钮筛选条件_Excel办公技巧:如何对表格数据进行自定义筛选?

    这篇文章和大家分享对表格数据进行自定义筛选的两种方法. 应用场景 下图表格中$A$2:$B$10单元格为筛选数据区域,我们想在其中筛选出姓"春"或者姓"夏"同时 ...

  3. java数组 序列化_程序猿的日常——Java基础之clone、序列化、字符串、数组

    其实Java还有很多其他的基础知识,在日常工作技术撕逼中也是经常被讨论的问题. 深克隆与浅克隆 在Java中创建对象有两种方式: 一种是new操作符,它创建了一个新的对象,并把对应的各个字段初始化成默 ...

  4. Java快速入门学习笔记4 | Java语言中的if条件语句

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  5. JAVA 8 lambda 表达式实现按某个属性值查找对象集合中符合条件的对象

    转载自:https://www.cnblogs.com/lindsayYang/p/9843599.html JAVA 8 lambda 表达式实现按某个属性值查找对象集合中符合条件的对象 当前的需求 ...

  6. Java入坑指南,学Java需要具备哪些前提条件?

    很多零基础的学员对于学Java比较迷茫,想通过学Java掌握一技之长,却不知道入门需要具备哪些条件?不知道怎么去学习? 下面详细来和大家聊聊该怎么学习Java: 首先,要对Java语言感兴趣,兴趣是最 ...

  7. JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)

    Java流程控制语句 本博文将对JAVA中组成各种结构的控制语句进行重点介绍,主要内容是区别于C/C++中的流程控制语句的重点解析. 1.顺序语句 顺序结构中的语句可分为:表达式语句.空语句和复合语句 ...

  8. JAVA程序员的日常工作是什么?一文告诉知道!

    由于Java的企业需求热度,想学习Java并获得就业安排的学员也只增不减.而对于Java工程师来说,每天的工作内容是怎样的呢?本篇带大家了解一下Java开发者的日常工作,希望会有所收获. 首先对于一个 ...

  9. JAVA程序员的日常工作是什么?一文告诉知道

    由于Java的企业需求热度,想学习Java并获得就业安排的学员也只增不减.而对于Java工程师来说,每天的工作内容是怎样的呢?本篇带大家了解一下Java开发者的日常工作,希望会有所收获. 首先对于一个 ...

最新文章

  1. Adobe源码泄漏?3行代码搞定,Flash动画无缝导入Android/iOS/cocos2dx(二)
  2. Eclipse 高亮显示
  3. a为数组名。sizeof(a)和sizeof(a)有什么区别?结果是?
  4. mysql用if判断关联的表_mysql表连接,子查询以及if判断
  5. 巧用css text-indent减小中文标点符号的占位大小
  6. 【常用】加载配置文件管理资源路径
  7. 横竖三个数的和相等_怎样证明 0.999… = 1?数值上是相等的,那么两者的区别是什么?...
  8. JAVA网络编程Socket常见问题 【长连接专题】
  9. jquery Fancybox使用教程
  10. Update your Twitter status using php
  11. 内核同步机制-读写信号量(rw_semaphore)
  12. centos6.5 安装mysql5.6多实例(多配置文件)
  13. 扫描仪twain驱动是什么_扫描仪无法显示怎么办 扫描仪无法显示解决方法【详解】...
  14. 工作2年跳槽阿里,面试官会问哪些?(免费领取Java面试题)
  15. 【侯捷】C++ STL
  16. 最左推导和最右推导,语法树,二义性文法
  17. word表格换页自动续前表的方法
  18. 读《MacTalk·人生元编程》及Mac常用软件
  19. MOS管栅极电阻的功耗该如何计算
  20. PPa-HA/NH2/NHS/MAL焦脱镁叶绿酸-a修饰叶酸/氨基/活性酯/马来酰亚胺的反应

热门文章

  1. 小红书投放怎么变现?品牌做小红书的变现效果好吗
  2. 如何快速查找BUG?
  3. 数字图像处理第二章——数字图像基础
  4. 丝线行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  5. 20191207-CHKDSK命令修复磁盘教程
  6. slider wpf 垂直_继续聊WPF——Slider控件
  7. 王家族字辈(我的家族字辈)
  8. linux最多多少主分区,Linux为什么最多能分4个四个主分区
  9. Win10系统繁体字输入切换为简体字快捷键
  10. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):的三种解决方式