Scala连接Mysql数据库
import java.sql.DriverManager
object ScalaJDBCApp{
def main(args: Array[String]): Unit = {
val url = "jdbc:mysql://117.50.6.123:3306/ruoze_d66"
val user="root"
val password ="123456"
val sql ="select SCHEMA_VERSION, VERSION_COMMENT from VERSION"
val connection = DriverManager.getConnection(url,user,password)
val stmt = connection.createStatement()
val rs = stmt.executeQuery(sql)
while(rs.next()){
val schema=rs.getString(1)
val comment = rs.getString(2)
print(schema+"..."+comment)
}
rs.close()
stmt.close()
connection.close()
}
}
MySQL , Hadoop
父类和子类:两个类之间
子类 extends 父类
new 子类() 的时候会触发 new 父类()
重写: 父类有一个方法,子类里面有一个同样的方法 overwirte用来在子类中重写
抽象类:
类里面的方法没有具体的实现
abstract class A{
def speak()
val name:String
}
class B extends A{
override def speak():Unit={
println("sadasd")
}
val name = "sda"
}
抽象的东西不能直接new,而是通过子类来new(子类不能还是抽象的)
Scala不能多继承
Trait
extends 类 with trait
也可以直接extend trait
高阶函数
一定要掌握!
val l = List(1,2,3,4,5,6,7,8)
println("1............"+l.map((x:Int) => x*2))
println("2............"+l.map(x => x*2))
println("3............"+l.map( _*2))
(_,1) 每一个单词赋1
val l = List(1,2,3,4,5,6,7,8)
println("1............"+l.map((x:Int) => x*2))
println("2............"+l.map(x => x*2))
println("3............"+l.map( _*2))
// l*2>10
println("4............"+l.map( _*2).filter(_>10))
//取前2个
println("5............"+l.map( _*2).filter(_>10).take(2))
//求和
println("6............"+ l.reduce(_+_))
//1-2-3-..-8
println("7............"+ l.reduce(_-_))
println("8............"+ l.reduceLeft(_+_))
println("9............"+ l.reduceLeft(_-_))
println("max............"+ l.max)
println("min............"+ l.min)
//大于3的记录数
println("10............"+ l.count(_>3))
val a = List(List(1,2),List(3,4),List(5,6))
println("11............"+ a.flatten)
println("12............"+ a.flatten.map(_*2))
// flatMap = flatten+map
println("13............"+ a.flatMap(_.map(_*2)))
1............List(2, 4, 6, 8, 10, 12, 14, 16)
2............List(2, 4, 6, 8, 10, 12, 14, 16)
3............List(2, 4, 6, 8, 10, 12, 14, 16)
4............List(12, 14, 16)
5............List(12, 14)
6............36
7............-34
8............36
9............-34
max............8
min............1
10............5
11............List(1, 2, 3, 4, 5, 6)
12............List(2, 4, 6, 8, 10, 12)
13............List(2, 4, 6, 8, 10, 12)
模式匹配
val coaches = Array("a","b","c")
val coach = coaches(Random.nextInt(coaches.length))
coach match{
case "a" => println("我是a")
case "c" => println("我是c")
case _ => println("我是b")
}