package inClass
import inClass.MysqlUtil._
object Demon02MySql {
//定义apply()方法 可以不用再new
def apply()= new Demon02MySql
def apply(driver: String, url: String, user: String, pwd: String): Demon02MySql =new Demon02MySql()
def main(args: Array[String]): Unit = {
val demo = Demon02MySql()
demo.conn()
//demo.insert(5, "wahaha", 21)
demo.select()
}
---------------------------------------------------------
package inClass
import java.sql.{Connection, DriverManager}
//伴生类
class MysqlUtil{
}
object MysqlUtil {
/*
*在inset 和 select 方法 中直接用conn()
* 不要用conn() 返回的值 Connection 在implicit 类中 会报空
*指针异常,通过debug能看到connection is null
*/
implicit class Mysql(obj:Demon02MySql){
private var driver="com.mysql.jdbc.Driver"
private var url="jdbc:mysql://192.168.107.100:3306"
private var user="root"
private var password="ok"
// def this(driver:String,url:String,user:String,pwd:String){
// this()
// this.driver=driver
// this.url=url
// this.user=user
// this.password=pwd
//
// }
//初始化connection
private var connection:Connection=_
//连接
def conn():Connection={
Class.forName(driver)
DriverManager.getConnection(url,user,password)
}
// 插入
def insert():Int={
var inserSql="insert into testScala.student(id,name,age) values(1,'zhangsan',18)"
val i = conn().createStatement().executeUpdate(inserSql) //写connection 报错是 null
i
}
//传值插入
def insert(id:Int,name:String,age:Int):Int={
// var inserSql="insert into testScala.student(id,name,age) values("+id+",'"+name+"',"+age+")"
var inserSql="insert into testScala.student(id,name,age) values(?,?,?)"
val prep=conn.prepareStatement(inserSql)
prep.setInt(1,id)
prep.setString(2,name)
prep.setInt(3,age)
val i = prep.executeUpdate()
// val i = connection.createStatement().executeUpdate(inserSql)
i
}
//查询
def select():Unit={
var sqlString="select id,name,age from testScala.student"
val re = conn().createStatement().executeQuery(sqlString)
while (re.next()) {
val id = re.getInt(1)
val name = re.getString(2)
val age = re.getInt(3)
printf("学号:%d 姓名:%s 年龄:%d \n",id,name,age)
// println(s"学号:$id 名字:$name 年龄:$age")
// println("学号:%d 姓名:%s 年龄:%d".format(id,name,age))
}
}
}
}
插入 后 查询结果: