Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在Slick 2.0中从列表[String]映射到字符串?_Scala_Type Conversion_Slick_Slick 2.0 - Fatal编程技术网

Scala 如何在Slick 2.0中从列表[String]映射到字符串?

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

因为MySQL数据库不支持数组,所以我想将
列表(“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})