DB

object DB extends LoanPattern

Basic Database Accessor

You can start with DB and blocks if using scalikejdbc.ConnectionPool.singleton.

Using DBSession:

 ConnectionPool.singleton("jdbc:...","user","password")
 case class User(id: Int, name: String)

 val users = DB readOnly { session =>
   session.list("select * from user") { rs =>
     User(rs.int("id"), rs.string("name"))
   }
 }

 DB autoCommit { session =>
   session.update("insert into user values (?,?)", 123, "Alice")
 }

 DB localTx { session =>
   session.update("insert into user values (?,?)", 123, "Alice")
 }

 using(DB(ConnectionPool.borrow())) { db =>
   db.begin()
   try {
     DB withTx { session =>
       session.update("update user set name = ? where id = ?", "Alice", 123)
     }
     db.commit()
   } catch { case e =>
     db.rollbackIfActive()
     throw e
   }
 }

Using SQL:

 ConnectionPool.singleton("jdbc:...","user","password")
 case class User(id: Int, name: String)

 val users = DB readOnly { implicit session =>
   SQL("select * from user").map { rs =>
     User(rs.int("id"), rs.string("name"))
   }.list.apply()
 }

 DB autoCommit { implicit session =>
   SQL("insert into user values (?,?)").bind(123, "Alice").update.apply()
 }

 DB localTx { implicit session =>
   SQL("insert into user values (?,?)").bind(123, "Alice").update.apply()
 }

 using(DB(ConnectionPool.borrow())) { db =>
   db.begin()
   try {
     DB withTx { implicit session =>
       SQL("update user set name = ? where id = ?").bind("Alice", 123).update.apply()
     }
     db.commit()
   } catch { case e =>
     db.rollbackIfActive()
     throw e
   }
 }
Companion
class
trait Product
trait Mirror
class Object
trait Matchable
class Any

Type members

Inherited types

type Closable = { def close(): Unit; }
Inherited from
LoanPattern
type MirroredElemLabels <: Tuple

The names of the product elements

The names of the product elements

Inherited from
Mirror
type MirroredLabel <: String

The name of the type

The name of the type

Inherited from
Mirror

Value members

Concrete methods

def autoCommit[A](execution: DBSession => A)(implicit context: CPContext, settings: SettingsProvider): A

Begins a auto-commit block easily with ConnectionPool.

Begins a auto-commit block easily with ConnectionPool.

Type Params
A

return type

Value Params
context

connection pool context

execution

execution

Returns

result value

def autoCommitSession(settings: SettingsProvider)(implicit context: CPContext): DBSession

Returns auto-commit session instance. You SHOULD close this instance by yourself.

Returns auto-commit session instance. You SHOULD close this instance by yourself.

Value Params
context

connection pool context

Returns

session

def autoCommitWithConnection[A](execution: Connection => A)(implicit context: CPContext, settings: SettingsProvider): A

Begins a auto-commit block easily with ConnectionPool and pass not session but connection to execution block.

Begins a auto-commit block easily with ConnectionPool and pass not session but connection to execution block.

Type Params
A

return type

Value Params
context

connection pool context

execution

execution

Returns

result value

def connect(conn: Connection, settings: SettingsProvider): DB

Get a connection and returns a DB instance.

Get a connection and returns a DB instance.

Value Params
conn

connection

Returns

DB instance

def connected(implicit conn: Connection, settings: SettingsProvider): DB

Returns a DB instance by using an implicit Connection object.

Returns a DB instance by using an implicit Connection object.

Value Params
conn

connection

Returns

DB instance

def describe(table: String, settings: SettingsProvider)(implicit context: CPContext): String

Returns describe style string value for the table

Returns describe style string value for the table

Value Params
context

connection pool context as implicit parameter

table

table name (with schema optionally)

Returns

described information

def futureLocalTx[A](execution: DBSession => Future[A])(implicit context: CPContext, ec: ExecutionContext, settings: SettingsProvider): Future[A]

Begins a local-tx block that returns a Future value easily with ConnectionPool.

Begins a local-tx block that returns a Future value easily with ConnectionPool.

Type Params
A

future result type

Value Params
context

connection pool context

execution

execution that returns a future value

Returns

future result value

def getAllTableNames(settings: SettingsProvider)(implicit context: CPContext): List[String]

Returns all the table names

Returns all the table names

Value Params
context

connection pool context as implicit parameter

Returns

table information

def getColumnNames(table: String, settings: SettingsProvider)(implicit context: CPContext): List[String]
def getTable(table: String, settings: SettingsProvider)(implicit context: CPContext): Option[Table]

Returns table information

Returns table information

Value Params
context

connection pool context as implicit parameter

table

table name (with schema optionally)

Returns

table information

def getTableNames(tableNamePattern: String, settings: SettingsProvider)(implicit context: CPContext): List[String]

Returns multiple table information

Returns multiple table information

Value Params
context

connection pool context as implicit parameter

tableNamePattern

table name pattern (with schema optionally)

Returns

table information

def localTx[A](execution: DBSession => A)(implicit context: CPContext, boundary: TxBoundary[A], settings: SettingsProvider): A

Begins a local-tx block easily with ConnectionPool.

Begins a local-tx block easily with ConnectionPool.

Type Params
A

return type

Value Params
context

connection pool context

execution

execution

Returns

result value

def localTxWithConnection[A](execution: Connection => A)(implicit context: CPContext, boundary: TxBoundary[A], settings: SettingsProvider): A

Begins a local-tx block easily with ConnectionPool and pass not session but connection to execution block.

Begins a local-tx block easily with ConnectionPool and pass not session but connection to execution block.

Type Params
A

return type

Value Params
context

connection pool context

execution

execution

Returns

result value

def readOnly[A](execution: DBSession => A)(implicit context: CPContext, settings: SettingsProvider): A

Begins a read-only block easily with ConnectionPool.

Begins a read-only block easily with ConnectionPool.

Type Params
A

return type

Value Params
context

connection pool context

execution

execution

Returns

result value

def readOnlySession(settings: SettingsProvider)(implicit context: CPContext): DBSession

Returns read-only session instance. You SHOULD close this instance by yourself.

Returns read-only session instance. You SHOULD close this instance by yourself.

Value Params
context

connection pool context

Returns

session

def readOnlyWithConnection[A](execution: Connection => A)(implicit context: CPContext, settings: SettingsProvider): A

Begins a read-only block easily with ConnectionPool and pass not session but connection to execution block.

Begins a read-only block easily with ConnectionPool and pass not session but connection to execution block.

Type Params
A

return type

Value Params
context

connection pool context

execution

execution

Returns

result value

def showTables(tableNamePattern: String, tableTypes: Array[String], settings: SettingsProvider)(implicit context: CPContext): String

Returns table name list

Returns table name list

Value Params
context

connection pool context as implicit parameter

tableNamePattern

table name pattern (with schema optionally)

Returns

table name list

def withinTx[A](execution: DBSession => A)(implicit db: DB): A

Begins a within-tx block easily with a DB instance as an implicit parameter.

Begins a within-tx block easily with a DB instance as an implicit parameter.

Type Params
A

return type

Value Params
db

DB instance as an implicit parameter

execution

execution

Returns

result value

def withinTxSession(implicit db: DB): DBSession

Returns within-tx session instance. You SHOULD close this instance by yourself.

Returns within-tx session instance. You SHOULD close this instance by yourself.

Value Params
db

DB instance as an implicit parameter

Returns

session

def withinTxWithConnection[A](execution: Connection => A)(implicit db: DB): A

Begins a within-tx block easily with a DB instance as an implicit parameter and pass not session but connection to execution block.

Begins a within-tx block easily with a DB instance as an implicit parameter and pass not session but connection to execution block.

Type Params
A

return type

Value Params
db

DB instance as an implicit parameter

execution

execution

Returns

result value

Inherited methods

def futureUsing[R <: Closable, A](resource: R)(f: R => Future[A])(implicit ec: ExecutionContext): Future[A]

Guarantees a Closeable resource will be closed after being passed to a block that takes the resource as a parameter and returns a Future.

Guarantees a Closeable resource will be closed after being passed to a block that takes the resource as a parameter and returns a Future.

Inherited from
LoanPattern
def using[R <: Closable, A](resource: R)(f: R => A): A
Inherited from
LoanPattern