Last active
October 18, 2016 07:57
-
-
Save filipelenfers/7914993 to your computer and use it in GitHub Desktop.
Slick 2.0.0 + BoneCP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.sql.Connection; | |
import java.sql.ResultSet; | |
import java.sql.SQLException; | |
import java.sql.Statement; | |
import java.sql.Timestamp | |
import java.util.Date | |
import scala.slick.driver.MySQLDriver.simple._ | |
//import scala.slick.driver.H2Driver.simple._ | |
//MultipleDB examples, DAL included: https://github.com/slick/slick-examples/blob/2.0.0-M3/src/main/scala/com/typesafe/slick/examples/lifted/MultiDBExample.scala e https://github.com/slick/slick-examples/blob/2.0.0-M3/src/main/scala/com/typesafe/slick/examples/lifted/MultiDBCakeExample.scala | |
import com.jolbox.bonecp._; | |
case class Coffee(id:Option[Int], name: String, price: Double, created:Timestamp = new Timestamp(new Date().getTime), obs:Option[String] ) | |
class Coffees(tag: Tag) extends Table[Coffee](tag, "COFFEES") { | |
val now = SimpleFunction.nullary[Timestamp]("now") | |
def id = column[Int]("id", O.PrimaryKey, O.AutoInc) | |
def name = column[String]("COF_NAME", O.NotNull, O.DBType("varchar(5000)")) | |
def price = column[Double]("PRICE", O.NotNull) | |
def created = column[Timestamp]("created") //TODO Slick 2.1 will enable the usage of functions on O.Default, so in the future put O.Default(now) here. | |
def obs = column[Option[String]]("obs", O.Nullable) | |
def * = (id.?,name,price,created,obs) <> (Coffee.tupled,Coffee.unapply) | |
} | |
object Main { | |
val coffees = TableQuery[Coffees] | |
def coffeesForInsert = coffees.map(u => (u.name,u.price,u.created,u.obs).shaped <> | |
({case (name,price,created,obs) => Coffee(None,name,price,created,obs)}, { (u: Coffee) => Some((u.name,u.price,u.created,u.obs))})) | |
def main(args: Array[String]): Unit = { | |
println("Início.") | |
Class.forName("com.mysql.jdbc.Driver"); // load the DB driver | |
val ds = new BoneCPDataSource(); // create a new datasource object | |
ds.setJdbcUrl("jdbc:mysql://localhost/yourDatabase?characterEncoding=utf-8"); // set the JDBC url | |
ds.setUsername("root"); // set the username | |
ds.setPassword("root"); | |
ds.setMinConnectionsPerPartition(2); | |
ds.setMaxConnectionsPerPartition(30); | |
ds.setPartitionCount(3); | |
val db = Database.forDataSource(ds) | |
db.withSession { | |
implicit session => | |
coffees.ddl.drop | |
coffees.ddl.create | |
//coffees += Coffee(None,"Teste",6.00,new Timestamp(new Date().getTime),Some("aaaa")) //way 1 | |
val id = (coffeesForInsert returning coffees.map(_.id)) += Coffee(None,"Teste",6.00,new Timestamp(new Date().getTime),None); println(id); //way 2 | |
//val id = (coffeesForInsert returning coffees.map(_.id)) += Coffee(None,"Teste",6.00,new Timestamp(new Date().getTime),Some("aaaa")); println(id); | |
println(coffees.filter(_.id === id).first) | |
//println(Coffee.unapply(Coffee(None,"Teste",6.00,new Timestamp(new Date().getTime),"aaaa"))) // transforms the object on a tuple | |
} | |
ds.close(); // close the datasource pool | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment