因为 MySQL 数据库不支持数组,所以我想将类似List("facebook","linkedin","local")
字符串的列表映射到类似"facebook, linkedin, local"
.
我想用 slick 2.0 进行双向映射,但我不知道如何编写TypeMapper
.
谁能给我举个例子?
因为 MySQL 数据库不支持数组,所以我想将类似List("facebook","linkedin","local")
字符串的列表映射到类似"facebook, linkedin, local"
.
我想用 slick 2.0 进行双向映射,但我不知道如何编写TypeMapper
.
谁能给我举个例子?
这在此处的官方 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
)
请注意,这是不安全的,因为如果字符串中包含逗号,则映射不是双射的。您必须确保没有或以某种方式逃避它们。我把这个留给你。