2016-07-13 10 views
1

Ich bin neu in Slick.Ich wollte wissen, wie generische SQL-Abfragen in Scala mit Slick generieren Dies ist meine Beispielcode in Scala für generische Einfügen Operation mit jdbc, Wollen glatt für das gleiche verwenden:generische CRUD-Operationen generieren [einfügen, löschen, aktualisieren] mit Slick

def insert(connection: Connection, 
      tableName: String, 
      columnList: List[String], 
      valueList: List[Any]): Option[Int] = { 

     try { 
      val query = queryBuilderInsert(tableName, columnList) 
      val pst = connection.prepareStatement(query) 
      if (valueList.nonEmpty) { 
      for { i <- 1 to valueList.size } { 
       pst.setObject(i, valueList(i - 1)) 
      } 
      } 
      Some(pst.executeUpdate()) 
     } catch { 
      case e: Exception => 
      // Exception Handling 
      None 
     } 
     } 
def queryBuilderInsert(tableName: String,columnList: List[String]): String= { 
    val paramList = new ListBuffer[String] 
    val query = new StringBuilder("insert into " + tableName + "(") 

    if (columnList.nonEmpty) { 
     for { i <- 1 to columnList.size } { 
     query.append(columnList(i - 1)) 
     if (i != columnList.size) { 
      query.append(comma) 
     } 
     else { 
      query.append(") values(") 
     } 
     } 
    } 

    if (columnList.nonEmpty) { 
     for { i <- 1 to columnList.size } { 
     paramList.append(questionMark) 
     } 
     query.append(paramList.mkString(comma) + ")") 
    } 
    query.toString() 
    } 

Antwort

0

Sie sollten ActiveSlick betrachten. Es bietet genau das, was Sie brauchen: es umschließt Modelle und injiziert CRUD-Operationen basierend auf einer ID und bietet Ihnen alle Dienstprogramme zum Einfügen, Upserts, Löschen und Abrufen Ihrer Entitäten.

+0

Aber wir müssen immer noch die Tabelle [entity structure] kennen, und die Einfügungen sind spezifisch für Tabelle dh einfügen in eine bestimmte Entität –

+0

Aber das ist nicht der Fall, der Tabellenname wird ein Run-Tym zur Verfügung gestellt werden Tabellenstruktur ist nicht bekannt. Ich möchte ein generisches Insert erstellen, das Tabellennamen, eine Spaltenliste, in die Werte eingefügt werden, und die einzufügenden Werte aufnimmt. Also, Active Slick erfüllt nicht, richtig wenn ich falsch liege –

Verwandte Themen