2

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

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

谁能给我举个例子?

4

1 回答 1

6

这在此处的官方 slick doc 中有记录。

您可以使用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
)

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

于 2014-04-23T08:14:50.787 回答