加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala Slick批量插入数组

发布时间:2020-12-16 09:57:56 所属栏目:安全 来源:网络整理
导读:我将一个长字符串拆分为一个字符串数组,然后我想将它们全部插入到数据库中.我可以轻松地遍历数组并逐个插入,但它似乎非常低效.然后我认为有一个insertAll()方法.但是,insertAll()方法定义如下: def insertAll(值:U *) 这只接受多个U,但不接受数组或列表. /
我将一个长字符串拆分为一个字符串数组,然后我想将它们全部插入到数据库中.我可以轻松地遍历数组并逐个插入,但它似乎非常低效.然后我认为有一个insertAll()方法.但是,insertAll()方法定义如下:

def insertAll(值:U *)

这只接受多个U,但不接受数组或列表.

/* Insert a new Tag  */
def insert(insertTags: Array[String])(implicit s: Session) {
  var insertSeq: List[Tag] = List()
  for(tag <- insertTags) {
    insertSeq ++= new Tag(None,tag)
  }
  Tag.insertAll(insertSeq)

}

* Tag是表Object

这是我写的初步代码.它不起作用,因为insertAll()不接受Seq.我希望有一种方法可以做到这一点……所以它不会生成数组长度乘以SQL插入子句.

解决方法

当函数期望重复参数(例如U *)并且您希望传递U序列时,必须将其标记为序列参数,这可以通过以下方式完成:_ *

Tag.insertAll(insertSeq: _*)

这在6.6节的说明书中有所描述.它消除了一些情况,如;

def f(x: Any*)
f(Seq(1,"a"))

在那里,f可以使用单个参数调用,Seq(1,“a”)或2,1和“a”.它将是前者,后者用f(Seq(1,“a”):_ *)完成. Python有类似的语法.

关于你评论中的问题:
它适用于Seq,与Seq相关的集合,以及可以隐式转换为Seqs(包括Arrays)的值.这意味着很多收藏品,但不是全部.例如,不允许Set(但它们有一个toSeq方法,因此使用Set调用仍然很容易).

它不是一种方法,它更像是一种类型的堕落.它只是告诉编译器这个参数本身是完整的预期Seq,而不是序列参数中的唯一项.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读