Jor*_*ero 4 database scala slick
假设我有一个代表一组几个有效状态的特征。将对象存储在数据库中是一种好习惯吗?使用隐式函数MappedColumnType.base [Int,DoorState]存储Ints并将其映射到DoorState会更好吗?
trait DoorState
case object Open extends DoorState
case object Closed extends DoorState
class Doors(tag: Tag) extends Table[Door](tag, "DOORS") {
...
def state = column[DoorState]("DOOR_STATE")
...
}
Run Code Online (Sandbox Code Playgroud)
厂商推荐使用:
implicit def doorStateMapper = MappedColumnType.base[DoorState, Int]( ... )
Run Code Online (Sandbox Code Playgroud)
在案例对象和整数之间映射(我假设这是数据库列的类型)。需要在表和查询的范围内。您还可以映射到字符串或任何其他内容。MySQL ENUM就像映射到String一样。请参阅http://slick.typesafe.com/doc/2.1.0/userdefined.html#using-custom-scalar-types-in-queries
然后,这使您可以将DoorState用作列类型,如
column[DoorState] 要么 Column[DoorState]