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 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!
更多信息请关注公众号:「软件老王」,关注不迷路,IT技术与相关干货分享,回复关键字获取对应干货,本文版权归作者软件老王所有,转载需注明作者、超链接,否则保留追究法律责任的权利。
![](https://img2020.cnblogs.com/blog/1727736/202009/1727736-20200914102532919-2125394696.jpg)