关于java:JAVA日常工作解决的bug2多选条件筛选

业务场景:在用户轨迹上减少筛选性能,实现依据标签1和2来筛选

解决思路:在原有数据上减少接管前端的数据的字段,而后在controller层解决字段的信息,而后别离减少条件进行判断实现筛选性能--只写下我批改的局部(此文章的目标就是为了在日常中查缺补漏,便于日后的温习和学习)

代码实现:
1.在dao层实现字段减少来接管前端的数据(和前端人员沟通确定参数的模式)

2.在实现层对条件2实现筛选

if (!StringUtil.isEmpty(params.getType())){
        String[] str2 = params.getType().split(",");
 Set<String> 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<String> 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()的办法,以及汇合遍历的常识:

  1. 后端接管前端数据(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…

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理