如何从List [String]映射到Slick 2.0中的String?

use*_*909 2 scala type-conversion slick slick-2.0

因为MySQL数据库不支持Arrays,我想将字符串列表映射为类似List("facebook","linkedin","local")字符串"facebook, linkedin, local".

我想用slick 2.0进行双向映射,但我不知道如何编写实例TypeMapper.

谁能为我提供一个例子?

Mar*_*ing 6

这是在官方文档光滑记录在这里.

你可以使用MappedColumnType.base[T, U](tmap: (T) ? U, tcomap: (U) ? T)(参见scaladoc).

它需要两个函数参数,tmaptcomap在两个方向上进行映射.

对于您的特定用例,可以这样实现:

implicit val stringListMapper = MappedColumnType.base[List[String],String](
  list => list.mkString(","),
  string => string.split(',').toList
)
Run Code Online (Sandbox Code Playgroud)

请注意,这不安全,因为如果字符串中包含逗号,则映射不是双射的.你必须确保没有或以某种方式逃脱它们.我把它留给你.