Lambda表达式,stream流 第一个Spring boot应用和Scanner的问题
Lambda表达式
- 目前所理解的作用:简化匿名内部类的书写。
- 表达式:(参数)->{方法体}
- 如:calculator接口
public interface Calculator { int cal(int a,int b); }
匿名内部类和Lambda表达式对比
public class Main {
public static void main(String[] args) {
invokeCal(10,20,(int a,int b)->{
return a+b;
});
invokeCal(10, 20, new Calculator() {
@Override
public int cal(int a, int b) {
return a+b;
}
});
}
public static void invokeCal(int a,int b,Calculator c){
System.out.println(c.cal(a,b));
}
}
stream流
- 这里的流是指流水线,流水线上包含一些工序,就是对数据的处理等。集合为例,集合转换为流然后进行一连串的操作。
- 创建流
Stream.of ()或者xxx.stream
- 例子:
public class StreamFilter {
public static void main(String[] args) {
Stream<String> stream = Stream.of("张三丰","张翠山","赵教","周芷若","张无忌");
Stream<String> stream2 = stream.filter((String name )->{
return name.startsWith("张");
});
stream2.forEach(name->System.out.println(name));
}
}
Spring Boot
- 是什么:是对(spring spring mvc tomcat)的封装,更简洁,便以尽可能少的代码和配置来开发基于Spring的Java应用程序。Spring Boot的目标就是提供一个开箱即用的应用程序架构
- 基本结构:application.yml配置文件,正好看到过Properties集合 ,Ymal比之更省事。
- 启动Spring Boot应用程序:一个注解@SpringBootApplication相当于启动了自动配置和自动扫描
1.配置pom:继承
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.0.RELEASE</version> </parent>
,这样就可以引入Spring Boot的预置配置。
Scanner
- 连接数据库登录时用Statement会有注入问题我就试了一下,然后出错了,原因时 我接收键盘输入扫描用了.next() 因为sql注入的空格后面的都读取不到所以出错。解决办法用next Line()