2017-11-28 11 views
0

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로 데이터를 래핑하지 않고 오브젝트의 전체 콜렉션을 추가하는 더 좋은 방법이있을 수 있습니다.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를 사용하는 예이다.