嗨,我是新的Scala,并有以下示例的问题:
import scala.slick.driver.MySQLDriver.simple._
case class Customer(id: Option[Long], firstName: String, lastName: String, birthday: Option[java.util.Date])
/**
* Mapped customers table object.
*/
object Customers extends Table[Customer]("customers") {
def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
def firstName = column[String]("first_name")
def lastName = column[String]("last_name")
def birthday = column[java.util.Date]("birthday", O.Nullable)
def * = id.? ~ firstName ~ lastName ~ birthday.? <>(Customer, Customer.unapply _)
implicit val dateTypeMapper = MappedTypeMapper.base[java.util.Date, java.sql.Date](
{
ud => new java.sql.Date(ud.getTime)
}, {
sd => new java.util.Date(sd.getTime)
})
val findById = for {
id <- Parameters[Long]
c <- this if c.id is id
} yield c
}
Run Code Online (Sandbox Code Playgroud)
line的含义是什么:
def * = id.? ~ firstName ~ lastName ~ birthday.? <>(Customer, Customer.unapply _)
Run Code Online (Sandbox Code Playgroud)
如何解读波浪标志和问号?
您正在查看Slick Table定义,该定义遵循Slick 1.0+版本,使用名为的方法定义Table的默认投影*.在~我们携手在列 s到弥补一种投影生成器模式返回的默认视图.该?小号指示哪个字段代表在客户类选项值,并且<>是在一个方法的名称投影性状.您可以将此<>视为用于解决问题或将事物放入数据库中.如果您的某些内容映射不正确,例如,如果该表没有隐式dateTypeMapper,那么<>您可以在该函数中手动调整进入和退出Customer案例类以进行日期转换的值.
老实说,找出这些方法的来源在IDE中更容易,因为文档没有描述类的细节,并且Slick scaladocs中有很多类.
这是1.0.1 Lifted Embedded文档的链接.
| 归档时间: |
|
| 查看次数: |
1217 次 |
| 最近记录: |