Scala 如何在Slick 2.0中从列表[String]映射到字符串?
因为MySQL数据库不支持数组,所以我想将Scala 如何在Slick 2.0中从列表[String]映射到字符串?,scala,type-conversion,slick,slick-2.0,Scala,Type Conversion,Slick,Slick 2.0,因为MySQL数据库不支持数组,所以我想将列表(“facebook”、“linkedin”、“local”)之类的字符串列表映射到“facebook、linkedin、local”之类的字符串 我想用slick 2.0进行双向映射,但我不知道如何编写TypeMapper的实例 有人能给我举个例子吗?这在官方的slick文档中有记录 您可以使用MappedColumnType.base[T,U](tmap:(T)⇒ U、 tcomap:(U)⇒ T) (请参阅) 它需要两个函数参数tmap和tco
列表(“facebook”、“linkedin”、“local”)
之类的字符串列表映射到“facebook、linkedin、local”之类的字符串
我想用slick 2.0进行双向映射,但我不知道如何编写TypeMapper
的实例
有人能给我举个例子吗?这在官方的slick文档中有记录
您可以使用MappedColumnType.base[T,U](tmap:(T)⇒ U、 tcomap:(U)⇒ T)
(请参阅)
它需要两个函数参数tmap
和tcomap
,它们在两个方向上进行映射
对于您的特定用例,可以这样实现:
implicit val stringListMapper = MappedColumnType.base[List[String],String](
list => list.mkString(","),
string => string.split(',').toList
)
请注意,这是不安全的,因为如果字符串中包含逗号,则映射不是双射的。你必须确保没有人,或者以某种方式逃离他们。我将此留给您。如果列表为空,则此操作将失败,以下稍有不同的选项支持空列表:scala MappedColumnType.base[list[String],String]({case Nil=>“case list=>list.mkString(,”),{case”“=>Nil case String=>String.split(',').toList})