【问题标题】:How to insert case objects to mysql with alpakka slick connector如何使用 alpakka 光滑连接器将案例对象插入 mysql
【发布时间】:2018-05-12 05:06:18
【问题描述】:

我正在编写一些代码来将数据插入 MySQL。我决定使用 Alpakka Slick Connector。使用该示例:https://developer.lightbend.com/docs/alpakka/latest/slick.html#using-a-slick-flow-or-sink 我已成功将数据添加到 DB,但它需要我将带有 SQL 命令的字符串传递给 Sink。由于我收集了案例对象,因此我需要从这些对象构建命令。我可以向案例类添加生成 INSERT、UPDATE 和 DELETE 命令的方法,但也许有更好的方法可以添加整个对象集合,而无需使用 SQL 包装数据。

【问题讨论】:

    标签: scala akka slick alpakka


    【解决方案1】:

    使用“普通 SQL”的替代方法是使用“类型化”插入。这是一个使用Slick.sink 的示例,改编自SlickSpec

    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))
    

    上面的代码插入了 40 个用户(使用 User 案例类实例的集合),并行度设置为 4。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 2022-08-19
      • 2021-08-19
      • 2018-04-20
      • 2020-03-31
      • 2011-05-19
      • 1970-01-01
      相关资源
      最近更新 更多