java开发两三事(2)-java多数据源+java8stream与LocalDateTime时间差

1. 场景描述

最近在工作中碰到的几个问题,有点坑,记录下,遇到相同或类似问题的朋友可以参考下。

2. 解决方案

2.1 拼接sql后,多数据源执行

采用Spring+DruidDataSource数据源方式,程序中代码有点多,最简单的代码如下:

 DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl("jdbc:mysql://127.0.0.1:3306/ruanjianlaowang?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai");
        druidDataSource.setUsername("ruanjianlaowang");
        druidDataSource.setPassword("ruanjianlaowang");

        String handleSql = "select * from t_ruanjianlaowang";

        JdbcTemplate jdbcTemplate = new JdbcTemplate(druidDataSource);
        List<Map<String, Object>> result = jdbcTemplate.queryForList(handleSql);
        return result;

说明:

(1)新建DruidDataSource数据源,进行连接配置;

(2)新建JdbcTemplate ,设置DruidDataSource参数即可

代码很简单,采用spring的JdbcTemplate进行数据源配置,数据源这块项目中抽出来设置成公共的。

2.2 JAVA8的stream

stream现在是越用越多了,还是不是太熟练,简单记录下,经常使用的是map与filter

map 简单数就是处理,方法用于映射每个元素到对应的结果,以下代码片段使用 map 输出了元素对应的平方数:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); 
List<Integer> squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());

filter 过滤,方法用于通过设置的条件过滤出元素。以下代码片段使用 filter 方法过滤出空字符串:
List<String>strings = Arrays.asList("ruan", "jian", "lao", "", "wang", "jkl");  long count = strings.stream().filter(string -> string.isEmpty()).count();

2.3 java8的LocalDateTime获取时间差

  public  static  void test14() {
        LocalDateTime pre = LocalDateTime.now();
        try {
            Thread.sleep(5 * 1100); //设置暂停的时间 5 秒,软件老王
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        LocalDateTime aft = LocalDateTime.now();
        Duration  duration = Duration.between(pre, aft);
        System.out.println(duration.getSeconds());
    }

返回结果为long类型的相差秒数。


I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!

posted @ 2019-11-29 11:06  软件老王  阅读(385)  评论(0编辑  收藏  举报