栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【java实战】项目经验

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【java实战】项目经验

文章目录
    • 1 sql函数
      • 1.1 String字符串中查找单个字符串,Locate函数使用
      • 1.2 查询json字段包含某个元素的查询语句, json_contains函数使用
    • 2 JDK8新特性,流式操作
      • Collectors.groupingBy()
      • Collectors.collectingAndThen()
      • stream().anyMatch
    • 3. 时间获取、时间格式
      • 获取当前日期上一季度 开始时间
      • 获取当前日期上一季度 结束时间

1 sql函数 1.1 String字符串中查找单个字符串,Locate函数使用

例如:我想在12;13;14中查找12或13或14。我看谁还在用模糊查询??
先来看下LOCATE这个函数

LOCATE(substring,str)返回substring在字符串str中第一次出现的位置

LOCATE(substring,str ,pos)返回substring在字符串str的pos位置之后第一次出现的位置。

如果不包含该str,则返回0。

所以我们只要包含那个元素,返回的结果就是大于0(> 0),那么我们的SQL可以写为:


  and LOCATE(#{co.currentUser,jdbcType=VARCHAR}, line.audit_contact) > 0)

1.2 查询json字段包含某个元素的查询语句, json_contains函数使用
SELECt *  FROM member
where json_contains(user,CONCAt('"',#{user},'"'))
2 JDK8新特性,流式操作
 requestFormList.stream()
                .collect(Collectors.groupingBy(ProjectRequestFormInstanceBO::getProjectInstanceId,
                        Collectors.collectingAndThen(Collectors.toList(),
                                list ->
                                        list.stream()
                                                .anyMatch(item ->
                                                        Objects.equals(RequestFormStatus.STAGING.getKey(), item.getStatus()) ||
                                                                Objects.equals(RequestFormStatus.CANCEL.getKey(), item.getStatus()) ||
                                                                Objects.equals(RequestFormStatus.REJECT.getKey(), item.getStatus())
                                                ))
                ));
    }
Collectors.groupingBy()

将list按照某个元素分组

Collectors.collectingAndThen()

Java 8 流的新类 java.util.stream.Collectors 实现了 java.util.stream.Collector 接口,同时又提供了大量的方法对流 ( stream ) 的元素执行 reduce and map 操作,或者统计操作。

1.什么是reduce操作?
聚合操作,中⽂意思是 “减少”
根据⼀定的规则将Stream中的元素进⾏计算后返回⼀个唯⼀的值

Collectors.collectingAndThen() 函数应该最像 reduce and map 了,它可接受两个参数,第一个参数用于 reduce操作,而第二参数用于 map操作。

也就是,先把流中的所有元素传递给第一个参数,然后把生成的集合传递给第二个参数来处理。

stream().anyMatch

java8 stream接口终端操作 anyMatch,allMatch,noneMatch

  1. anyMatch:判断的条件里,任意一个元素成功,返回true

  2. allMatch:判断条件里的元素,所有的都是,返回true

  3. noneMatch:与allMatch相反,判断条件里的元素,所有的都不是,返回true

count方法,跟List接口中的 .size() 一样,返回的都是这个集合流的元素的长度,不同的是,流是集合的一个高级工厂,中间操作是工厂里的每一道工序,我们对这个流操作完成后,可以进行元素的数量的和;

所以上述代码返回的是Map
可以用来作为权限判断、操作列按钮显示等。

3. 时间获取、时间格式 获取当前日期上一季度 开始时间
    
    public static Date getStartQuarter(Date date) {
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.setTime(date);
        startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - 1) * 3);
        startCalendar.set(Calendar.DAY_OF_MONTH, 1);
        return getDateMin(startCalendar.getTime());
    }
        public static Date getDateMin(Date date) {
        try {
            SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return datetimeFormat.parse(formatDate(date) + " 00:00:00");
        } catch (Exception ex) {
            log.error(MessageFormat.format("date:{0} ", date), ex);
        }
        return date;
    }
获取当前日期上一季度 结束时间
    
    public static Date getLastQuarter(Date date) {
        Calendar endCalendar = Calendar.getInstance();
        endCalendar.setTime(date);
        endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2);
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));

        return getDateMax(endCalendar.getTime());
    }
    public static Date getDateMax(Date date) {
        try {
            SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return datetimeFormat.parse(formatDate(date) + " 23:59:59");
        } catch (Exception ex) {
            log.error(MessageFormat.format("date:{0} ", date), ex);
        }
        return date;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988378.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号