2017-11-28 4 views
0

MySQLにデータを挿入するコードを書いています。私はAlpakka Slick Connectorを使うことに決めました。その例を使用します:https://developer.lightbend.com/docs/alpakka/latest/slick.html#using-a-slick-flow-or-sink私は正常にDBにデータを追加しましたが、SQLコマンドを含む文字列をシンクに渡す必要があります。私はケースオブジェクトのコレクションを持っているので、そのオブジェクトからコマンドをビルドする必要があります。 INSERT、UPDATE、DELETEコマンドを生成するメソッドをケースクラスに追加することはできますが、SQLでデータをラップすることなく、オブジェクトのコレクション全体を追加するほうが良いかもしれません。alpakkaスリックコネクタを使ってmysqlにcaseオブジェクトを挿入するには

答えて

2

「プレーンSQL」を使用する代わりに、「型付き」の挿入を使用することができます。上記のコードは、4つの並列設定で(User場合クラスのインスタンスのコレクションを使用して)40人のユーザが挿入

case class User(id: Int, name: String) 
class Users(tag: Tag) extends Table[(Int, String)](tag, "USERS") { 
    def id = column[Int]("ID") 
    def name = column[String]("NAME") 
    def * = (id, name) 
} 

val typedUsers = TableQuery[Users] 

def insertUser(user: User): DBIO[Int] = typedUsers += user 

val users = (1 to 40).map(i => User(i, s"Name$i")).toSet 

Source(users) 
    .runWith(Slick.sink(parallelism = 4, insertUser)) 

:ここSlickSpecから適合さSlick.sinkを用いた例です。

関連する問題