由于MySQL数据库不支持Arrays,我想将List("facebook","linkedin","local")
等字符串列表映射到"facebook, linkedin, local"
之类的字符串。
我想用slick 2.0进行双向映射,但我不知道如何编写TypeMapper
的实例。
有人可以为我提供一个例子吗?
答案 0 :(得分:6)
官方光滑的文档here中记录了这一点。
您可以使用MappedColumnType.base[T, U](tmap: (T) ⇒ U, tcomap: (U) ⇒ T)
(请参阅scaladoc)。
它需要两个函数参数tmap
和tcomap
,它们可以在两个方向上进行映射。
对于您的具体用例,可以这样实现:
implicit val stringListMapper = MappedColumnType.base[List[String],String](
list => list.mkString(","),
string => string.split(',').toList
)
请注意,这不安全,因为如果字符串中包含逗号,则映射不是双射的。你必须确保没有或以某种方式逃脱它们。我把它留给你。