slick是scala生态中的数据库连接组件,跟scala一样有良好的函数式编程特性,slick的数据库操作是异步的,返回的是Future对象,需要用Await.result或者使用回调来得到结果;
下面使用类封装查询:
首先数据库文件配置:
1.application.conf
db {
mysql_102 = {
url = "jdbc:mysql://xxx.xxx.xxx.xx:3306/dims2?characterEncoding=UTF-8&autoReconnect=true"
driver = com.mysql.jdbc.Driver
user = "root"
password = "xxxx"
connectionPool = disabled
keepAliveConnection = true
}
mysql_101 = {
url = "jdbc:mysql://xxx.xxx.xxx.xx:3306/dims-qy?characterEncoding=UTF-8&autoReconnect=true"
driver = com.mysql.jdbc.Driver
user = "root"
password = "xxxx"
connectionPool = disabled
keepAliveConnection = true
}
}
2.实体类---封装查询的数据结果,制定封装字段
case class MdcDrg(id_mdc: String, name_mdc: String, id_drg: String,name_drg:String)
//绑定结构数据
class MdcDrgDef (tag:Tag) extends Table[MdcDrg](tag,"t_mdc_drg"){
val id_mdc = column[String]("id_mdc")
val name_mdc = column[String]("name_mdc")
val id_drg = column[String]("id_drg")
val name_drg = column[String]("name_drg")
override def * : ProvenShape[MdcDrg] = (id_mdc,name_mdc,id_drg,name_drg) <> (MdcDrg.tupled,MdcDrg.unapply)
}
3.建立Dao层管理---统一将table查询放在yige文件中
object DaoSupport {
val file = new File("D:\\svn-reposity\\parent\\scala\\src\\main\\resources\\application.conf")
val config = ConfigFactory.parseFile(file)
val db = Database.forConfig("mysql_101", config.getConfig("db"))
val mdcDrgs = TableQuery[MdcDrgDef]
}
4.测试插件
val res:Seq[MdcDrg] = Await.result(db.run(DaoSupport.mdcDrgs.result), Duration.Inf).toList
返回的是future,需要使用Await.result来获取值。
也可以直接sql查询:默认Vector(Tuple<T>)类型封装结果
//通过sql查询
val res_sql = Await.result(db.run(sql"""select * from t_mdc_drg""".as[(String, String, String,String)]), Duration.Inf)
println(res_sql)